在R中分箱数字变量

mcp*_*son 11 r binning

我有一个向量X,其中包含我想要分组/离散的正数.对于这个向量,我希望数字[0,10]正好显示在向量中,但数字[10,∞)为10+.

我正在使用:

x <- c(0,1,3,4,2,4,2,5,43,432,34,2,34,2,342,3,4,2)
binned.x <- as.factor(ifelse(x > 10,"10+",x))
Run Code Online (Sandbox Code Playgroud)

但这对我来说很糟糕.有谁知道更好的解决方案或不同的方法?

unu*_*tbu 20

怎么样cut:

binned.x <- cut(x, breaks = c(-1:9, Inf), labels = c(as.character(0:9), '10+'))
Run Code Online (Sandbox Code Playgroud)

产量:

 # [1] 0   1   3   4   2   4   2   5   10+ 10+ 10+ 2   10+ 2   10+ 3   4   2  
 # Levels: 0 1 2 3 4 5 6 7 8 9 10+
Run Code Online (Sandbox Code Playgroud)

  • 这似乎比问题中的解决方案更为复杂。 (2认同)

Mar*_*rek 7

你的问题不一致.
在描述中10属于"10+"组,但在代码中10是分开的级别.如果10 应该在"10+"组中,那么您的代码应该是

as.factor(ifelse(x >= 10,"10+",x))
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您可以将数据截断为10(如果您不想要一个因子):

pmin(x, 10)
# [1]  0  1  3  4  2  4  2  5 10 10 10  2 10  2 10  3  4  2 10
Run Code Online (Sandbox Code Playgroud)