我想计算应用于另一列的一组间隔[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
循环这很容易; 然而; 我想避免这种方法,并使用矢量化的基础R
或dplyr
方法.
矢量化的解决方案
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