当前位置:  开发笔记 > 编程语言 > 正文

累积和以条件为条件

如何解决《累积和以条件为条件》经验,为你挑选了1个好方法。

我想计算应用于另一列的一组间隔[n, +?)(即? n)的数据帧列的条件和.在下面的示例数据中,间隔应用于列a,列b中的值有条件地求和.对于[0, +?)所有列a值,所有值的总和也是? 0如此b_sum.对于[3, +?)只有一条记录是? 3如此b_sum为500.

输入数据

  a    b          
1.1  100          
2.3  150          
0.1   20          
0.5   80          
3.3  500          
1.6  200
1.1  180

期望的结果

n  b_sum
0   1230
1   1130
2    650
3    500
4      0

我确信使用for循环这很容易; 然而; 我想避免这种方法,并使用矢量化的基础Rdplyr方法.



1> Khashaa..:

矢量化的解决方案

df <- df[order(df$a), ] # sort by "a" column
ind <- findInterval(0:4, df$a) + 1 
sum(df$b) - cumsum(c(0,  df$b))[ind]
#[1] 1230 1130  650  500    0

推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有