我对 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))
我想获得以“a01”开头的所有列、以“a02”开头的所有列和以“a03”开头的所有列的总和:
a01tot a02tot a03tot
20 30 50
50 20 0
20 20 20
10 20 0
到目前为止,我已经使用
DT$a01tot <- rowSums(DT[,grep("a01", names(DT))])
依此类推,但我的真实数据框有更多组,我想避免为每个组编写一行代码。我想知道是否可以在向量或列表中包含 "a01","a02","a03"... 并添加一些 "a01tot","a02tot","a03tot"... 列到自动生成数据框。
我知道我的问题与这个问题非常相似:R sum of rows for different group of columns that start with similar string,但解决方案在那里指出,
cbind(df, t(rowsum(t(df), sub("_.*", "_t", names(df)))))
在我的情况下不起作用,因为没有要替换的通用元素(例如“_”)(我无法将变量的名称更改为 a01_1、a02_2 等)。
在我的情况下,切换到“长”格式也不是一个可行的解决方案。
任何帮助将不胜感激。