如何将离散比率数据更改为R中的序数数据?

时间:2011-10-19 00:51:18

标签: r

以下是一个例子:

   height
1  1.5
2  1.3 
3  1.9 
4  1.5
5  1.6 

其中1000个高度范围从0到1.9。我想将它们分为3个等级:低,中,高。然后它们是有序数据。

结果应如下所示:

   height
1  medium
2  low
3  high
4  medium
5  medium

摘要应如下所示:

        height
low:    203
medium: 723
high:   74

我尝试使用循环但是“低,中,高”是字符,而不是级别。 以下是我如何做到这一点:

height_cuts = c(1.5,1.9)
for(i in 1:nrow(health.sample)){
  if(is.na(health.sample$height[i])==FALSE){
    if(health.sample$height[i] < height_cuts[1]){
      health.sample$height[i] = low_h
    }
  }
}

3 个答案:

答案 0 :(得分:3)

cut(height, quantile(height, prob=c(203, 723, 74)/1000 ), labels=c("low", "medium", "high") )

答案 1 :(得分:2)

足够方便地,

cut会削减您的数据。

# cut needs all endpoints explicitly specified, including outside bounds
height_cuts <- c(-Inf, 1.5, 1.9, Inf)

hcut <- cut(height, height_cuts, labels=c("low", "medium", "high"))

ETA:这将使间隔基于&lt; = 1.5,&lt; = 1.9。如果您希望间隔<1.5,<1.9,请指定right=FALSE

hcut <- cut(height, height_cuts, right=FALSE, ...)

答案 2 :(得分:1)

使用cut

cut(x$height, c(0,1.5,1.9,10), labels=c("low","med","high"), right=FALSE)
# [1] med  low  high med  med