Tre*_*lof 12 r subset dataframe
我有一个更大的数据集遵循相同的顺序,一个唯一的日期列,数据,唯一的日期列,日期等.我试图不仅按名称对数据列进行子集,而且还使用唯一的日期列.下面的代码根据名称列表选择列,这是我想要的一部分,但是关于如何在子集列之前立即获取列的任何想法也是如此?
期待最终得到一个包含Date1,Fire,Date3,Earth列的DF(仅使用NameList).
这是我可重现的代码:
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]
Run Code Online (Sandbox Code Playgroud)
MrF*_*ick 11
怎么样
NameList <- c("Fire","Earth")
idx <- match(NameList, names(MAINDF))
idx <- sort(c(idx-1, idx))
NewDF <- MAINDF[,idx]
Run Code Online (Sandbox Code Playgroud)
这里我们match()用来查找所需列的索引,然后我们可以使用索引减法来获取它之前的列
用于which从名称中获取列号,然后它只是简单的算术:
col.num <- which(colnames(MAINDF) %in% NameList)
NewDF <- MAINDF[,sort(c(col.num, col.num - 1))]
Run Code Online (Sandbox Code Playgroud)
产生
Date1 Fire Date3 Earth
1 -0.010908003 0.007700453 -0.022778726 -0.016413307
2 0.022300509 0.021341360 0.014204445 -0.004492150
3 -0.021544992 0.014187158 -0.015174048 -0.000495121
4 -0.010600955 -0.006960160 -0.024535954 -0.024210771
5 -0.004694499 0.007198620 0.005543146 -0.021676692
6 -0.010623787 0.015977135 -0.027741109 -0.021102651
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27503 次 |
| 最近记录: |