2016-04-29 61 views
0

我有一個變量glyhb,它是從2.85到16.11的數字。我怎樣才能把它變成一個分類變量,其中5.7以下的所有內容都是一個分類,5.7到6.4之間的所有內容都是另一個分類變量,還有一個分類變量爲6.5或更高。 enter image description here製作一個數字變量分類

+2

使用'cut' ...... – Gregor

+2

最佳模式我可以找到quicky:[R-cut by defined interval](http://stackoverflow.com/q/5746544/903061),也許有人有更好的重複? – Gregor

+2

@Gregor這個很相似。 [指定因子的水平換間隔(http://stackoverflow.com/questions/21558129/specify-factor-levels-for-intervals) – lmo

回答

1

下面是使用嵌套ifelse一個例子:

set.seed(999) 
glyhb <- runif(100, 2.85, 16.11) 
categorical_glyhb <- factor(ifelse(glyhb >= 6.5, 3, ifelse(glyhb >= 5.7, 2, 1))) 
4

功能cut()劃分根據在參數breaks中定義的值的數值矢量成段。在這種情況下,我們可以包含選項right=FALSE以指定值5.7應屬於類別2,值6.5應分配給類別3.默認值是在相應的段中包含右邊界的值。

cut(glyhb, breaks=c(0,5.7,6.5,Inf), right=FALSE, labels=paste0("cat", c(1:3)) 

默認情況下cut()返回分類變量的向量。我們可以用選項labels來指定這些因素的標籤(水平)。在這種情況下,選擇了水平cat1cat2cat3

希望這會有所幫助。