2010-04-15 81 views
9

我有一個數據框,其中包含一列整數,我希望將其用作參考來創建新的分類變量。我想將變量分成三組並自己設置範圍(即0-5,6-10等)。我嘗試了cut,但是它將變量分成基於正態分佈的組,並且我的數據是正確的。我也嘗試使用if/then語句,但輸出true/false值,我想保留我的原始變量。我相信有一個簡單的方法來做到這一點,但我似乎無法弄清楚。任何建議在一個簡單的方法來做到這一點很快?根據範圍在R中創建分類變量

我腦子裏想的是這樣的:

x x.range 
3 0-5 
4 0-5 
6 6-10 
12 11-15 

回答

12

伊恩的回答()爲做到這一點,據我所知道的最常見的方式。

我更喜歡使用,從

指定分級間隔說法似乎更直觀一點給我。

您使用像這樣:

# mock some data 
data = sample(0:40, 200, replace=T) 

a = c(0, 5);b = c(5,9);c = c(9, 19);d = c(19, 33);e = c(33, 41) 

my_bins = matrix(rbind(a, b, c, d, e), ncol=2) 

# returns: (the binning intervals i've set) 
     [,1] [,2] 
[1,] 0 5 
[2,] 5 9 
[3,] 9 19 
[4,] 19 33 
[5,] 33 41 

shx = shingle(data, intervals=my_bins) 

#'shx' at the interactive prompt will give you a nice frequency table: 
# Intervals: 
    min max count 
1 0 5 23 
2 5 9 17 
3 9 19 56 
4 19 33 76 
5 33 41 46 
+1

很好的解決方案,如果你懶得設置的最大值和最小值的矩陣。如果你有一個動態範圍,這可能是單調乏味的。 – 2011-04-28 09:04:43

+0

@羅曼,我正在想這個。我有一個與動態範圍相似的問題。在這種情況下你有什麼建議嗎? – PikkuKatja 2015-03-12 09:27:46

16
x <- rnorm(100,10,10) 
cut(x,c(-Inf,0,5,6,10,Inf))