rに精通していないので、これが単純な問題かどうかは分かりません。 総額の60%(または約)を構成する値の合計に基づいてIDの範囲を作成したいとします。ここにデータフレームがあります。 DF
IDの範囲をRの値の合計に基づいて作成する
ID Val
98 2
98 1
98 4
3 11
3 6
3 8
3 1
24 3
24 2
46 1
46 2
59 6
私は最初にそれらをIDによってDF
をソートした後、60%の点で最大IDの値和のどの範囲を確認し、基になるように、残りのために、10%、10%、10%グループ、それらを、10%(またはランダム10%、10%、20%または5%、15%、10%、10%)であってもよい。そのような私のデータフレームが
ID Val
3-24 35 # (11+6+8+1+3+2) ~ 62% of the total sum of `Val` column
46-59 9 # (1+2+6) = 18% of the total sum of `Val` column
98 7 # (2+1+4) =14% of the total sum of `Val` column
のように見えるだろうと私はこの
DF=DF[with(DF, order(DF$ID)), ]
perce = round(sum(DF$ID)*60/100)
for(i in 1:dim(DF)[1]){
if(sum(DF$Val) == perce){
ID=which(DF$ID)
.
.
.
put those ID's in a range that constitutes 60%
}
}
を試みることができる、これが可能であるか、できなかった場合、私は知りませんか。?
おかげ Domnick
'DF $ Val == perce'のように浮動小数点数をテストしているようです。問題を引き起こす可能性があります。 '?cut'が助けになるかもしれない – cumin
@cuminはそれを合計し、' perce'を丸めた – Domnick
あなたは正確に何を探しているのか分からないが、['ntile'関数](https:// rdrr .io/cran/dplyr/man/ranking.html#heading-2)? – Aramis7d