2014-01-10 54 views
-1

我想向包含基於另一列中的數字的分類數據的數據框添加一列。我在Create categorical variable in R based on range處發現了類似的問題,但該解決方案並未提供我需要的解決方案。基本上,我需要的結果是這樣的:使用cut()shingle()根據R中的範圍創建類別

x group 
3 0-5 
4 0-5 
6 6-10 
12 > 10 

的解決方案建議,雖然這些是用於將根據範圍的數據是有用的,他們不創造新的類別列,我需要。

我一直在使用類似(請不要笑)

data$group <- "0-5"==data[data$x>0 & data$x<5, ] 

也試過,但是那當然沒有工作。有誰知道我會如何正確地做到這一點?

回答

6

爲什麼cut沒有工作?你沒有分配一個新的專欄或什麼?

> data=data.frame(x=c(3,4,6,12)) 
> data$group = cut(data$x,c(0,5,10,15)) 
> data 
    x group 
1 3 (0,5] 
2 4 (0,5] 
3 6 (5,10] 
4 12 (10,15] 

您創建的數據框的列中有一個factor對象。顯示的文本是因素的levels,您可以通過分配改變他們:

levels(data$group) = c("0-5","6-10",">10") 
data 
    x group 
1 3 0-5 
2 4 0-5 
3 6 6-10 
4 12 >10 

閱讀一些因素基本科研文檔,你就會得到它。

+0

Spacedman - 謝謝你的解決方案!事實上,我沒有分配一個新的專欄。你知道如何讓類別顯示爲「0-5」而不是「(0,5]」嗎? – Thomas

+0

@Thomas使用'labels'參數,試試這個'cut(data $ x,c(0,5) ,10,15),labels = c(「0-5」,「6-10」,「> 10」))'看看'?cut',看看文檔。 –

+0

看編輯級別 – Spacedman