基于r中的分组或条件的行和 [英] rowsum based on groupings or conditions in r
本文介绍了基于r中的分组或条件的行和的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有50多个专栏,并研究过各种解决方案,包括this。
但是,这并没有真正回答我的问题。我有如下的列名:total_2012Q1, total_2012Q2, total_2012Q3, total_2012Q4
、.、最多total_2014Q4
和其他字符变量。我想按年添加行,所以最后,我将有三个年份列:total_2012, total_2013, total_2014
。
我不想rowsum并选择类似..sample[,2:5]
的内容。有没有一种不需要手动检查列号就可以对它们求和的方法?此外,split.default也是一个选项,但是如果还有字符变量,那么如何只处理要求和的int变量呢?
简单可复制示例(Pre):
id total_2012Q1 total_2012Q2 total_2013Q1 total_2013Q2 char1 char2
1 1231 5455 1534 2436 N Y
2 3948 1239 223 994 Y N
可复制示例(POST):
id total_2012 total_2013 char1 char2
1 6686 3970 N Y
2 5187 1217 Y N
感谢您的建议。
推荐答案
可以使用split.default
,即
sapply(split.default(df, sub('^.*_([0-9]+)Q[0-9]', '\1', names(df))), rowSums)
# 2012 2013
#[1,] 3 23
#[2,] 7 37
#[3,] 9 49
数据:
dput(df)
structure(list(total_2012Q1 = c(1, 2, 3), total_2012Q2 = c(2,
5, 6), total_2013Q1 = c(12, 15, 16), total_2013Q2 = c(11, 22,
33)), class = "data.frame", row.names = c(NA, -3L))
这篇关于基于r中的分组或条件的行和的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文