小编Ast*_*rte的帖子

按组分组名称以模式开头的所有列

我是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等).

在我的情况下,切换到"长"格式也不是一个可行的解决方案.

任何帮助将不胜感激.

r rowsum

7
推荐指数
1
解决办法
7321
查看次数

标签 统计

r ×1

rowsum ×1