基于r中的分组或条件的行和 [英] rowsum based on groupings or conditions in r

查看:16
本文介绍了基于r中的分组或条件的行和的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想根据列名在中执行

我有50多个专栏,并研究过各种解决方案,包括this

但是,这并没有真正回答我的问题。我有如下的列名: total_2012Q1, total_2012Q2, total_2012Q3, total_2012Q4、.、最多total_2014Q4和其他字符变量。我想按年添加行,所以最后,我将有三个年份列:total_2012, total_2013, total_2014

我不想并选择类似..sample[,2:5]的内容。有没有一种不需要手动检查列号就可以对它们求和的方法?此外,也是一个选项,但是如果还有字符变量,那么如何只处理要求和的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆