Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:数据框中列的非标准重新排序_R - Fatal编程技术网

R:数据框中列的非标准重新排序

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

我想对数据框中的列重新排序。这并不像我想象的那么简单,首先我的数据表是在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.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