我是R的新手,我试图根据他们的名字按组加总.我有一个像这样的数据框:
DT <- data.frame(a011=c(0,10,20,0),a012=c(010,10,0,0),a013=c(10,30,0,10),
a021=c(10,20,20,10),a022=c(0,0,0,10),a023=c(20,0,0,0),a031=c(30,0,10,0),
a032=c(0,0,10,0),a033=c(20,0,0,0))
Run Code Online (Sandbox Code Playgroud)
我想获得以"a01"开头的所有列的总和,以"a02"开头的所有列以及以"a03"开头的所有列:
a01tot a02tot a03tot
20 30 50
50 20 0
20 20 20
10 20 0
Run Code Online (Sandbox Code Playgroud)
到目前为止我已经习惯了
DT$a01tot <- rowSums(DT[,grep("a01", names(DT))])
Run Code Online (Sandbox Code Playgroud)
等等,但我的真实数据框有更多的组,我想避免为每个组编写一行代码.我想知道是否可以在矢量或列表中包含"a01","a02","a03"......并且有一些内容可以添加"a01tot","a02tot","a03tot"......数据框自动.
我知道我的问题与这个问题非常相似:不同组列的R总和,以相似的字符串开头,但解决方案指出,
cbind(df, t(rowsum(t(df), sub("_.*", "_t", names(df)))))
Run Code Online (Sandbox Code Playgroud)
在我的情况下不起作用,因为没有要替换的公共元素(如"_")(我无法将变量的名称更改为a01_1,a02_2等).
在我的情况下,切换到"长"格式也不是一个可行的解决方案.
任何帮助将不胜感激.