R 如何对变量名称上循环的数据帧中不同列的值求和
我对R比较陌生(以前在Stata工作),如果这个问题太琐碎,我很抱歉 我有一个数据帧,其中变量按顺序命名,遵循以下逻辑: q12.X.Y 其中,X的取值范围为1到9,Y的取值范围为1到5 我需要将所有q12.X.Y变量的变量值加在一起,Y数从1到3(但不是以数字4或5结尾的变量) 理想情况下,我会根据变量的序列号编写一个循环,即:R 如何对变量名称上循环的数据帧中不同列的值求和,r,R,我对R比较陌生(以前在Stata工作),如果这个问题太琐碎,我很抱歉 我有一个数据帧,其中变量按顺序命名,遵循以下逻辑: q12.X.Y 其中,X的取值范围为1到9,Y的取值范围为1到5 我需要将所有q12.X.Y变量的变量值加在一起,Y数从1到3(但不是以数字4或5结尾的变量) 理想情况下,我会根据变量的序列号编写一个循环,即: df$test <- 0 for(i in 1:9){ for(j in 1:3){ df$test <- df$test+ df
df$test <- 0
for(i in 1:9){
for(j in 1:3){
df$test <- df$test+ df$q12.i.j
}
}
df$test我们可以使用grep
获得匹配
rowSums(df[grep("q12\\.[1-9]\\.[1-3]", names(df))])
或者,如果所有列名都存在,则使用paste
rowSums(df[paste0(rep(paste0("q12.", 1:9, "."), 3), 1:3)])
尝试行和(df[grep(“q12\\[1-9]\\\[1-3]”,names(df)))
如果所有列名都可用,那么可以创建一个带有粘贴行和的向量(df[paste0(rep(paste0,1:9,”),1:3)]
@akrun非常感谢!我尝试了grep,它完全符合我的意愿!
rowSums(df[paste0(rep(paste0("q12.", 1:9, "."), 3), 1:3)])