计算条件累积总和

时间:2019-01-21 01:06:25

标签: r dataframe

我有以下数据框:

N=seq(1:18)
Pre=c(0.5, 0.4, 0.7, 0.9, 0.6, 0.3, 0.7, 0.8, 0.6, 0.5, 0.4, 0.7, 0.9, 0.6, 0.3, 0.7, 0.8, 0.6)
df1=data.frame(N, Pre)

E=c(3.1, 2.9, 4.4)
Category=c(22,35,36)
df2=data.frame(E, Category)

我想在df1中创建两个新列(cumsumcategory

cumsum列中的值将累积,直到该值等于或小于df2$E的值为止;当该值更大时,cumsum将再次开始。在category列中的值为22,35或36,依此类推。

结果将是

enter image description here

这是一个简短的示例,我需要使用非常大的数据框来做到这一点。

1 个答案:

答案 0 :(得分:0)

要获取Category列,我们可以将cut的{​​{1}} cumsum值并将Pre定义为breaks的{​​{1}} cumsumE中的值分别作为df2的值。现在,我们可以将此labels值用作分组变量,并使用Category在每个组中提取Categorycumsum值。

Pre