私はこのようなデータフレームを持っています
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
これを行う最善の方法は何ですか?
ありがとう。