2017-09-17 29 views
1

グループごとに特定の値の四分位でパーセンタイルと呼ばれる変数を作成したいとします。私は、次のデータセットを持っている、と私はpercentile最後の変数を作成したいと思います:グループごとの特定の値の四分位数を計算する

id group value 
1 1  1  1 
2 2  1  2 
3 3  1  3 
4 4  1  4 
5 5  2 10 
6 6  2 20 
7 7  2 30 
8 8  2 40 

次は、予想される結果です。

id group value percentile 
1 1  1  1 
2 1  2  2 
3 1  3  3 
4 1  4  4 
5 2  10 1 
6 2  20 2 
7 2  30 3 
8 2  40 4 

は、これまでのところ私は図書館dplyr使用して次のことを試してみました:

df <- df %>% group_by(group) %>% within(df, percentile <- as.integer(cut(value, quantile(value, probs=0:4/4), 
                   include.lowest=TRUE))) 

をしかし、動作するようには思えません。これはあなたが?:

> df$percentile = ave(df$value, df$group, FUN=function(x) ecdf(x)(x)) 

再必要なものをされている任意の変数と呼ばれるパーセンタイルを生成し、どちらも私にエラー

+1

あなたが 'mutate()'の使用について考えているのだろうかと思います。 – jazzurro

答えて

1

を与えていない:あなたは4をしたい場合は、あなたの可能性:

df$percentile = factor(df$percentile) 
levels(df$percentile) <- 1:4 
+0

十分に近いですが、観察ごとの四分位を表す可変四分位を作成する場合、この場合のIDは –

+0

逆の方が簡単でしょう。この例の答えは@AndresAzqueta – erasmortg

+0

です。私はそれがひどく書かれたことを認識しました –

関連する問題