#r
Вопрос:
У меня есть фрейм данных с 19 obs из 33 переменных. Первые два столбца содержат коэффициенты, а остальные являются числовыми. Например.
ID Status Bacteria1 Bacteria2
P1 Patient 2.86 7.93
C1 Control 83.93 8.23
Я хотел бы найти суммы столбцов числовых столбцов и упорядочить их по убыванию, при этом два столбца факторов останутся в этом положении.
Я уже пробовал это:
test[,order(colSums(test[,3:33]), decreasing = TRUE)]
Два столбца факторов перемещаются, и столбцы, похоже, на самом деле не упорядочены по суммам столбцов.
Я знаю, что мог бы сделать это, создав новый фрейм данных с помощью just [,3:33]
, а затем cbind
возвращая столбцы факторов в новый фрейм данных. Но я пытаюсь стать более упорядоченным с помощью R
Спасибо
Ответ №1:
Вы можете использовать order
, чтобы получить порядок, в котором должны быть расположены столбцы. Попробуй —
df[c(1:2, order(colSums(df[,3:ncol(df)], na.rm = TRUE), decreasing = TRUE) 2)]
1:2
сохраняет постоянными первые 2 столбца. order
вернет правильный порядок для фрейма данных со 3:ncol(df)
столбцами, 2
необходим для смещения первых 2 столбцов.
Комментарии:
1. Это сработало идеально, спасибо. Я запомню трюк с сохранением постоянных столбцов
Ответ №2:
Одним из вариантов может быть:
ind <- sapply(df, is.numeric)
data.frame(df[!ind], df[ind][order(colSums(df[ind]))])
ID Status Bacteria2 Bacteria1
1 P1 Patient 7.93 2.86
2 C1 Control 8.23 83.93