r - 根据列名列表对列进行子集,并将列置于其之前

标签 r dataframe subset

我有一个更大的数据集,遵循相同的顺序,一个唯一的日期列,数据,唯一的日期列,日期等。我试图不仅按名称对数据列进行子集,还对唯一的日期列进行子集。下面的代码根据名称列表选择列,这是我想要的一部分,但是关于如何在子集列之前立即获取列的任何想法?

希望最终得到一个包含 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] 

最佳答案

怎么样

NameList <- c("Fire","Earth")

idx <- match(NameList, names(MAINDF))
idx <- sort(c(idx-1, idx))

NewDF <- MAINDF[,idx] 

这里我们使用 match()找到所需列的索引,然后我们可以使用索引减法来抓取它之前的列

关于r - 根据列名列表对列进行子集,并将列置于其之前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27556353/

相关文章:

r - 格直方图轴 : how to fix lower limit at 0, 但保持默认上限?

r - getKMLcoordinates 返回列表列表而不是段列表

python - 如何在keras中使用flow_from_dataframe输入多张图片?

r - plotmath 表达式中的斜体无法在 ggplot 中呈现为粗体

java - 使用 Rserve 时由于错误太大而丢弃缓冲区

python - 组织多个数据框的最佳方式

pandas - 如何从 csv 创建 pandas 数据框,其中一列包含嵌套字典?

r - 创建列以标识组内的最小字符并标记关系

r - 在字符串条件下子集 df

javascript - 在数组中找到所有可能的子集组合?