【发布时间】:2014-09-14 03:25:07
【问题描述】:
我有一个这样的数据框
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
最好的方法是什么?
谢谢。
【问题讨论】:
-
那么您能否为您的样本数据提供所需的输出?我真的很困惑结果应该是什么。
-
假设如果组
a小计一行的 11 变为 1000。而下一行是 0,那么,下一行 15 又是 1000。那么,你是说你想要最多 13 行? -
@santoku 我更新了代码。我希望这对你有用