Сопоставьте имена столбцов для двух разреженных матриц в R для использования с Xgboost [duplicate]

Когда вы конвертируете .1 или 1/10 в base 2 (двоичный), вы получаете повторяющийся шаблон после десятичной точки, точно так же, как пытаетесь представить 1/3 в базе 10. Значение не является точным, и поэтому вы можете 't делать точную математику с ней, используя обычные методы с плавающей запятой.

58
задан Henrik 28 February 2016 в 15:45
поделиться

5 ответов

Вы можете использовать order на names и использовать это для упорядочения столбцов при подмножестве:

test[ , order(names(test))]
  A B C
1 4 1 0
2 2 3 2
3 4 8 4
4 7 3 7
5 8 2 8

. В соответствии с вашим собственным определенным порядком вам нужно будет определить свое собственное отображение имена для заказа. Это будет зависеть от того, как вы хотели бы это сделать, но замена любой функции на это с помощью order выше должна дать желаемый результат.

Вы можете, например, взглянуть на строки кадра данных в соответствии с целевым вектором, который задает желаемый порядок , т. е. вы можете match ваш кадр данных names против целевого вектора, содержащего нужный порядок столбцов.

94
ответ дан Community 5 September 2018 в 07:07
поделиться

Вот обязательный ответ dplyr, если кто-то захочет сделать это с помощью трубы.

test %>% 
    select(sort(names(.)))
0
ответ дан Andrew Brēza 5 September 2018 в 07:07
поделиться
test = data.frame(C=c(0,2,4, 7, 8), A=c(4,2,4, 7, 8), B=c(1, 3, 8,3,2))

Использование простой следующей замены функции может выполняться (но только если в кадре данных не много столбцов):

test <- test[, c("A", "B", "C")]

для других:

test <- test[, c("B", "A", "C")]
12
ответ дан Anton K 5 September 2018 в 07:07
поделиться
  test[,sort(names(test))]

сортировка по именам столбцов может работать легко.

2
ответ дан Shalini Baranwal 5 September 2018 в 07:07
поделиться

Вот что я обнаружил, чтобы достичь аналогичной проблемы с моим набором данных.

Во-первых, сделайте то, что упомянул выше, например,

test[ , order(names(test))]

. Во-вторых, используйте функцию everything () в dplyr для перемещения определенных интересующих столбцов (например, «D», G "," K ") в начале фрейма данных, поместив алфавитно упорядоченные столбцы после них.

select(test, D, G, K, everything())

-2
ответ дан ɢʀᴜɴᴛ 5 September 2018 в 07:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: