我对 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 以相似字符串开头的不同列组的行总和,但解决方案指出,
cbind(df, t(rowsum(t(df), sub("_.*", "_t", names(df)))))
在我的情况下不起作用,因为没有通用元素(如“_”)可以替换(我无法将变量的名称更改为 a01_1、a02_2 等)。
对于我来说,切换到“长”格式也不是一个可行的解决方案。
任何帮助将不胜感激。