如何重新排序R中数据框的列以从特定的连续变量开始

时间:2016-06-05 14:43:54

标签: r dataframe

我在R中有一个数据框,在行中有一些观察结果和列中的各种特征 - 定量和定性 - 。我想以某种方式重新排序我的数据框的列,它命令从开始时的5个特定数字变量开始,它们属于特定的组。我的想法是,之后我想使用PCA变体方法,它需要我的连续变量组按顺序在一个组中一起排序。在我的例子中,我的数据框的列按如下顺序排序:

colnames(dat)
 [1] "SUV"           "CCT5"          "FD"            "k3"           
 [5] "MTHFD1"        "HPGDS"         "PAPSS2"        "INF"          
 [9] "SLC26A2"       "k4"            "NPM1"          "TIMP1"        
[13] "NR3C2"         "CA2"           "UGDH"          "MEF2C"        
[17] "POP1"          "ENO1"          "DKC1"          "EDNRB"        
[21] "VRK1"          "CD44"          "GSTP1"         "AARS"         
[25] "PDE2A"         "MAOA"          "CCT8"          "CA4"          
[29] "PPA1"          "RAE1"          "PGM1"          "PPP1CB"       
[33] "ACADM"         "NME1"          "PPARG"         "PRDX4"        
[37] "PPARGC1A"      "CTPS1"         "CD36"          "IARS"         
[41] "CCT4"          "CA1"           "SULT1A2"       "ACADS"        
[45] "Meta_factor"   "Disease"       "Location_Type" "Tumor_Stage"  
[49] "Lymph_Node"   

因此,我希望我的数据框的列以下列变量开头: FD,SUV,K3,INF,k4 ,然后是以下变量。这可能来自R?

中的函数或包

2 个答案:

答案 0 :(得分:1)

我想最简单的方法就是:

first.col <- c("FD", "SUV", "K3", "INF", "k4")
dat <- dat[,c(first.col, setdiff(colnames(dat), first.col))]           

更一般地说,如果你想使用特定类型的变量组(在这种情况下是数字):

dat.numerics <- colnames(x)[sapply(x, class) %in% c('numeric','integer')]
dat[,dat.numerics]

同样的因素方法:

dat.factors <- colnames(x)[sapply(x, class)=='factor']
dat[,dat.factors]

答案 1 :(得分:0)

试试这个:

first = c("FD", "SUV", "K3", "INF" ,"k4")
dat = cbind(dat[,first], dat[,!(colnames(dat) %in% first)])