R 基于列名列表对列进行子集设置,并将列置于其前面
我有一个更大的数据集,按照相同的顺序,一个唯一的日期列,数据,唯一的日期列,日期等。我试图子集不仅是数据列的名称,但唯一的日期列也。下面的代码根据名称列表选择列,这是我想要的部分,但是我想知道如何在子列之前抓住该列吗 希望以包含Date1、Fire、Date3和Earth列的DF结束(仅使用名称列表) 这是我的可复制代码:R 基于列名列表对列进行子集设置,并将列置于其前面,r,dataframe,subset,R,Dataframe,Subset,我有一个更大的数据集,按照相同的顺序,一个唯一的日期列,数据,唯一的日期列,日期等。我试图子集不仅是数据列的名称,但唯一的日期列也。下面的代码根据名称列表选择列,这是我想要的部分,但是我想知道如何在子列之前抓住该列吗 希望以包含Date1、Fire、Date3和Earth列的DF结束(仅使用名称列表) 这是我的可复制代码: Cnames <- c("Date1","Fire","Date2","Water","Date3","Earth") MAINDF <- data.frame(
Cnames <- c("Date1","Fire","Date2","Water","Date3","Earth")
MAINDF <- data.frame(replicate(6,runif(120,-0.03,0.03)))
colnames(MAINDF) <- Cnames
NameList <- c("Fire","Earth")
NewDF <- MAINDF[,colnames(MAINDF) %in% NameList]
Cnames使用which
从名称中获取列号,然后它只是一个简单的算术:
col.num <- which(colnames(MAINDF) %in% NameList)
NewDF <- MAINDF[,sort(c(col.num, col.num - 1))]
怎么样
NameList <- c("Fire","Earth")
idx <- match(NameList, names(MAINDF))
idx <- sort(c(idx-1, idx))
NewDF <- MAINDF[,idx]
名称列表
NameList <- c("Fire","Earth")
idx <- match(NameList, names(MAINDF))
idx <- sort(c(idx-1, idx))
NewDF <- MAINDF[,idx]