4
IDと収益の2つの列を持つデータがあります。私は総収入の10%を持つ10のグループのデータを分割する列を作成したいと思います。分位法は私に、収益ではなく同じ数のIDを持つ10のグループを与えます。私はこの結果それぞれの値が同じ合計10個のグループに行を分割します。
N Revenue %Revenue
798 500 10%
104 500 10%
47 500 10%
25 500 10%
14 500 10%
7 500 10%
3 500 10%
2 500 10%
1 500 10%
1 500 10%
1,000 $5,000 100%
を探していながら
N Revenue %Revenue
100 $3,992 80%
100 $518 10%
100 $236 5%
100 $126 3%
100 $68 1%
100 $35 1%
100 $16 0%
100 $6 0%
100 $2 0%
100 $1 0%
1,000 $5,000 100%
私はタイプの結果、次の取得
idrev[ , decile := cut(Revenue,
breaks = quantile(Revenue, probs = seq(0, 1, by = 1/10)),
labels = 1:10, right = FALSE)]
にコードを追加するR.
で、このためのソリューションを提案してください。サンプルデータと統計情報を取得する
ここではlibrary(Hmisc);library(data.table)
set.seed(123)
idrev<-data.table(ID=1:1000, Revenue=sample(100,1000,replace=T))
idrev[,.(.N,sum(Revenue))] #Check total revenue
idrev[ , decile := cut2(Revenue,g=10)]
idrev[,.(.N,sum(Revenue)),by=decile][order(decile)]
のおかげでかなり近いです!このようにcumsumを使用できることを知らなかった – usct01
'data.table'の中で基底R関数を使用する能力は、このパッケージの大きな特徴の1つです。 – lmo