2016-06-16 8 views
1

デシールを分布に割り当てるが、整数の形にする必要がある。 1のように最初の10分の2に対応し、2番目の2番目の3番目の3番目の... 私が探している正確には次のコードを使用している瞬間です。だから、分配にデシールを割り当てる

cut(x, breaks = quantile(data, probs = seq(0, 1, 0.1))) 

、代わりに結果のこのタイプの:

(0,100] (100,200] 

私のような何かがしたい:

1 90 
2 130 
2 150 
3 230 

を誰もがすでにこのためのいくつかのコードを持っていますか?

+1

'cut'の' labels'引数を使用してください –

+0

パーフェクトありがとう:) –

+1

@RichardTelford投稿を回答してください。 – zx8754

答えて

3

あなたはcut

labels引数を使用することができます
x2 <- cut(x, breaks = quantile(x, probs = seq(0, 1, 0.1)), 
    labels = 1:10, include.lowest = TRUE) 

これは要因を返します。これを整数に変換するには、

as.numeric(as.character(x2)) 

(これは正式な場合はas.characterが冗長です)を実行してください。

1

あなたはdata.frame.で作業している場合は、あなたがこれを行うことができます:

df$decile <- cut(df$x, breaks= quantile(df$x, probs= seq(0, 1, by= 0.1)), 
      include.lowest= TRUE, 
      labels= c(1:10)) 

あなたがdata.tableアプローチを使用したい場合には

library(data.table) 

setDT(df)[, decile := cut(x, breaks= quantile(x, probs= seq(0, 1, by= 0.1)), 
          include.lowest= TRUE, 
          labels= c(1:10)) ]