首页 > 解决方案 > 如何在R中剪切具有相同中断的多列?

问题描述

我正在尝试汇总多列中断内的计数。
我的数据集包含年龄数据列,看起来像这样

1 2
44.550775 43.205206
49.710284 51.914791
... ...

值在 0 到 70 之间。
我想计算在特定范围内有多少值(5 岁步长)。我知道如何获得一列的计数:

> b <- table(cut(df[,1], breaks=seq(0, 70, 5)))
> b
  (0,5]  (5,10] (10,15] (15,20] (20,25] (25,30] (30,35] (35,40] (40,45] 
     13       8      11       6       9      11      18      14       7 
(45,50] (50,55] (55,60] (60,65] (65,70] 
      7       5       0       1       0 

如何使其适用于多个列?我想要的是这样的

> [1]
  (0,5]  (5,10] (10,15] (15,20] (20,25] (25,30] (30,35] (35,40] (40,45] 
     13       8      11       6       9      11      18      14       7 
(45,50] (50,55] (55,60] (60,65] (65,70] 
      7       5       0       1       0 
    > [2]
  (0,5]  (5,10] (10,15] (15,20] (20,25] (25,30] (30,35] (35,40] (40,45] 
     10       7      9       3       8      12      14      19       6 
(45,50] (50,55] (55,60] (60,65] (65,70] 
      6       5       3       1       0 

我努力了

data.frame(lapply(bootdata, cut, breaks=seq(0, 70, 5)))

但这只是给我一个数据框,说明每个单独值的数据范围,而不是按列计数。
任何人都可以帮忙吗?请问我是否不清楚。

标签: rcount

解决方案


例子

df=data.frame(matrix(runif(10*3,0,70),10,3))

sapply(df,function(x){table(cut(x,breaks=seq(0,70,5)))})

        X1 X2 X3
(0,5]    2  1  0
(5,10]   1  1  1
(10,15]  0  2  0
(15,20]  1  1  1
(20,25]  0  1  2
(25,30]  0  1  1
(30,35]  2  0  2
(35,40]  1  1  1
(40,45]  2  0  0
(45,50]  0  1  0
(50,55]  0  0  0
(55,60]  0  0  1
(60,65]  0  0  1
(65,70]  1  1  0

推荐阅读