【发布时间】:2020-12-26 04:43:45
【问题描述】:
考虑以下宽格式数据
df<-data.frame("id"=c(1,2,3,4),
"ex"=c(1,0,0,1),
"aQL"=c(5,4,NA,6),
"bQL"=c(5,7,NA,9),
"cQL"=c(5,7,NA,9),
"bST"=c(3,7,8,9),
"cST"=c(8,7,5,3),
"aXY"=c(1,9,4,4),
"cXY"=c(5,3,1,4))
我想保留列(或变量)名称“id”和“ex”并重命名其余列,例如“aQL”、“bQL”和“cQL”分别为“QL.1”、“QL.2”和“QL.3”。名称以“ST”和“XY”结尾的其他列预计将以相同的方式重命名,顺序也为 .1、.2 和 .3。值得注意的是,数据集中缺少“aST”和“bXY”,但我希望将它们包括在内并重命名为 ST.1 和 XY.2,每个条目都有 NA。预期的输出看起来像
df
id ex QL.1 QL.2 QL.3 ST.1 ST.2 ST.3 XY.1 XY.2 XY.3
1 1 1 5 5 5 NA 3 8 1 NA 5
2 2 0 4 7 7 NA 7 7 9 NA 3
3 3 0 NA NA NA NA 8 5 4 NA 1
4 4 1 6 9 9 NA 9 3 4 NA 4
主数据集有很多变量,所以我希望重命名以自动方式完成。我尝试了以下代码
renameCol <- function(x) {
setNames(x, paste0("QL.", seq_len(ncol(x))))
}
renameCol(df)
但它没有按预期工作。因此,它重命名了我想要维护的“id”和“ex”,并且在重命名多个变量(即 QL、ST、XY)时不灵活。非常感谢任何帮助。
【问题讨论】: