我有一个这样的数据框
set.seed(500)
df=data.frame(group=c(rep("A",20),rep("B",20),rep("C",20),rep("D",20)),value=round(runif(80,min=1,max=100)))
对于每个组,我想取最高值行,直到它们的总和超过/达到目标值
target=data.frame(group=c("A","B","C","D"),value=c(1000,400,500,300))
并将新组输出为 4 个数据帧。
我把它们从大到小排序
df=df[with(df, order(group,-value)), ]
所需的输出是
group value
a 98
a 93
...
a (sum from 98 to here, the group a subtotal should exceed 1000)
b 93
...
c 99
这样做的最佳方法是什么?
谢谢。