首页 > 解决方案 > 如何创建范围级别(例如 0-10、10-30、30-100 等)并使用 R 从一组数字中标记范围?

问题描述

信息是从 .csv 文件加载的,内容广泛

x=loan$Debt.To.Income.Ratio
x=factor(c("0.00-0.10","0.11-0.30", ">0.31"),
           levels=c("Low", "Medium", "High")
        )
table(x)

输出

低 中 高 0 0 0

由于某种原因,没有一个值被分类为低中和高级别。

标签: rlevels

解决方案


您可以使用cut, 并指定breaks参数。我将使用 dplyr 因为它使转换变得容易,但是如果需要,您可以使用 base R 来制作分组变量:

library(dplyr)

df <- mtcars %>%
    select(mpg) %>%
    mutate(group = cut(mtcars$mpg, breaks = c(10,15,20,25,30,35)))

head(df, 10)

# A tibble: 10 x 2
#      mpg group  
#    <dbl> <fct>  
#  1  21   (20,25]
#  2  21   (20,25]
#  3  22.8 (20,25]
#  4  21.4 (20,25]
#  5  18.7 (15,20]
#  6  18.1 (15,20]
#  7  14.3 (10,15]
#  8  24.4 (20,25]
#  9  22.8 (20,25]
# 10  19.2 (15,20]

levels(df$group)
# [1] "(10,15]" "(15,20]" "(20,25]" "(25,30]" "(30,35]"

推荐阅读