Суммы столбцов заказа без учета столбцов факторов

#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