R:数据框中列的非标准重新排序
我想对数据框中的列重新排序。这并不像我想象的那么简单,首先我的数据表是在shiny应用程序中实现的,其中列数不同,它由3个常量列(R:数据框中列的非标准重新排序,r,R,我想对数据框中的列重新排序。这并不像我想象的那么简单,首先我的数据表是在shiny应用程序中实现的,其中列数不同,它由3个常量列(ID,Nr,Abm)组成,其余的是被动的-->问题开始了 经过完整的数据处理等,我的最终产品如下所示: data <- structure(list(ID = structure(1L, .Label = "1", class = "factor"), T800_600 = 547.21, T800_650 = 297.42, T800_700 = 109
ID,Nr,Abm
)组成,其余的是被动的-->问题开始了
经过完整的数据处理等,我的最终产品如下所示:
data <- structure(list(ID = structure(1L, .Label = "1", class = "factor"),
T800_600 = 547.21, T800_650 = 297.42, T800_700 = 109.38,
T800_750 = 39.99, Abkuehlrate_T800_600 = 0.37, Abkuehlrate_T800_650 = 0.5,
Abkuehlrate_T800_700 = 0.91, Abkuehlrate_T800_750 = 1.25,
Nr = 12, Abm = 20), .Names = c("ID", "T800_600", "T800_650",
"T800_700", "T800_750", "Abkuehlrate_T800_600", "Abkuehlrate_T800_650",
"Abkuehlrate_T800_700", "Abkuehlrate_T800_750", "Nr", "Abm"),
row.names = "1", class = "data.frame", na.action = structure(2L,
.Names = "NA", class = "omit"))
我们可以看到,列的顺序非常混乱。我想得到的是在开始时的常量列:ID,Nr,Abm
,然后排序为“列的降序”:ID
,Nr
,Abm
,T800\u750
,T800\u700
,T800\u600
,T800\u750
,,Abkuehlrate\u T800\u 650
,Abkuehlrate\u T800\u 600
数据框-->列数不同!,因此,不能考虑手动输入。
感谢您的创意您可以尝试:
library(gtools)
data <- data[,mixedorder(colnames(data),decreasing = T)]
gr1 <- which(colnames(data) %in% c("ID","Nr","Abm"))
gr2 <- which(!colnames(data) %in% c("ID","Nr","Abm"))
data[c(gr1, gr2)]
Nr ID Abm T800_750 T800_700 T800_650 T800_600 Abkuehlrate_T800_750 Abkuehlrate_T800_700 Abkuehlrate_T800_650
1 12 1 20 39.99 109.38 297.42 547.21 1.25 0.91 0.5
Abkuehlrate_T800_600
1 0.37
库(gtools)
数据其他列是如何排序的?您给出的示例不是字母数字。只是添加了一个编辑,所有列按其应有的方式“排序”,关键是升序为.800_750..
,.800_700..
,.800_650..
,.800_600..
library(gtools)
data <- data[,mixedorder(colnames(data),decreasing = T)]
gr1 <- which(colnames(data) %in% c("ID","Nr","Abm"))
gr2 <- which(!colnames(data) %in% c("ID","Nr","Abm"))
data[c(gr1, gr2)]
Nr ID Abm T800_750 T800_700 T800_650 T800_600 Abkuehlrate_T800_750 Abkuehlrate_T800_700 Abkuehlrate_T800_650
1 12 1 20 39.99 109.38 297.42 547.21 1.25 0.91 0.5
Abkuehlrate_T800_600
1 0.37