2016-08-04 8 views
0

は、私は、次のデータフレーム分割データフレーム

x <- c(12,30,45,100,150,305,2,46,10,221) 
x2 <- letters[1:10] 
df <- data.frame(x,x2) 
df <- df[with(df, order(x)), ] 
    x x2 
7 2 g 
9 10 i 
1 12 a 
2 30 b 
3 45 c 
8 46 h 
4 100 d 
5 150 e 
10 221 j 
6 305 f 

を持っていると私は基本的に

v <- seq(0, 500, 50) 

、別のベクトルに基づいてグループにこれらを分割したいと思い、私は希望と仮定列xに基づいて各行を分割し、それがvとどのように一致するかを決定する(例えば、x < = vの要素) - vの要素の位置/インデックスを使用して、その行のグループを割り当てる。結果のテーブルには、次のようになります。私は簡単に検出できる方法を

 x x2 group 
7 2 g g1 
9 10 i g1 
1 12 a g1 
2 30 b g1 
3 45 c g1 
8 46 h g2 
4 100 d g3 
5 150 e g4 
10 221 j g4 
6 305 f g6 

が、私はそれぞれの行をループしてみてくださいし、試してみて、Vにそれを一致させるが、私はまだのよう混同してる可能性をどこ試合X < =要素vが発生し、グループIDを割り当てることができます。ありがとう。

答えて

3

あなたはvの値によってdf$xを分割するcutを使用することができます。あなただけのdf$xの値がvに基づいに該当数字のどのバケット引き出すためにas.numericを使用できるように

df$group <- as.numeric(cut(df$x, breaks = v)) 
df$group <- paste0('g', df$group) 

cut因子を返します。

+0

これは非常に参考になりましたが、喜んで、 – thelatemail

+0

(0120) – Ahdee

関連する問題