首页 > 解决方案 > 按区间对数值向量进行分类,也包括单个值

问题描述

我有一个数字范围从 0 到 1 的向量,两者都包括在内。我想创建一个包含三个类别的表:0、(0, 1)、1。我曾想过使用 cut 如下:

# Example data
v <- c(0.68, 0.70, 0.95, 0.15, 0, 0.21, 0.14, 0, 1, 1)
# Table using cut
table(cut(v, c(-Inf, 0, 1, Inf)))
# Output
(-Inf,0]    (0,1] (1, Inf] 
       2        8        0

但我还没有弄清楚如何同时为“仅 0”和“仅 1”值创建一个类别。此示例的预期结果是:

# Desired output
(-Inf,0]    (0,1) [1, Inf) 
       2        6        2

有任何想法吗?提前致谢!

标签: r

解决方案


你不能不手动创建你的垃圾箱cut吗?

v <- c(0.68, 0.70, 0.95, 0.15, 0, 0.21, 0.14, 0, 1, 1)

table(
  factor(
    ifelse(v == 0, "0", ifelse(v == 1, "1", "(0,1)")),
    levels = c("0", "(0,1)", "1")
  )
)

输出:

    0 (0,1)     1 
    2     6     2 

推荐阅读