
364
|
第
12
章
12.5 对数据分组
12.5.1 问题
有一个向量,需要根据间隔将数据拆分为组。统计学家称之为对数据
分组
(binning)。
12.5.2 解决方案
使用 cut 函数。你必须定义一个向量,比如 breaks,它给出间隔的范围。cut 函数将
根据间隔对数据进行分组。它返回一个因子,它的水平(元素)标识每个组的数据:
f <- cut(x, breaks)
12.5.3 讨论
此示例生成 1000 个具有标准正态分布的随机数。它通过定义 ±1、±2 和±3 个标准差
的间隔,将这些数据分为 6 组:
x <- rnorm(1000)
breaks <- c(-3, -2, -1, 0, 1, 2, 3)
f <- cut(x, breaks)
结果是一个因子 f,用于标识分组。函数 summary 根据水平显示该组元素数量。R 为
每个水平创建名称,对间隔使用数学符号:
summary(f)
#> (-3,-2] (-2,-1] (-1,0] (0,1] (1,2] (2,3] NA's
#> 25 147 341 332 132 18 5
得到的结果数据是我们所期望的钟形。它有 5 个 NA 值,表示 x 中的 5 个值落在定义的
间隔之外。
可以使用 labels 参数为 6 个组提供预定义的名称,而不是将晦涩的合成名称分配给
它们:
f <- cut(x, breaks, labels = c("Bottom", "Low", "Neg", "Pos", "High", "Top"))
现在,函数 ...