R 如何对变量名称上循环的数据帧中不同列的值求和

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

我对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$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)])