我有一个如下所示的数据框(df):
Value <- c(1,1,0,2,1,3,4,0,0,1,2,0,3,0,4,5,2,3,0,6)
Sl <- c(1:20)
df <- data.frame(Sl,Value)
> df
Sl Value
1 1 1
2 2 1
3 3 0
4 4 2
5 5 1
6 6 3
7 7 4
8 8 0
9 9 0
10 10 1
11 11 2
12 12 0
13 13 3
14 14 0
15 15 4
16 16 5
17 17 2
18 18 3
19 19 0
20 20 6
我想从
df
中创建 4 个垃圾箱并计算 Value=0
的出现次数按 Sl
分组单独数据框中的值,如下所示:Bin Count
1 1
2 2
3 2
4 1
我试图使用
table
和 cut
创建所需的数据框,但不清楚我将如何指定 df$Value
以及找到 0
的逻辑在这里df.4.cut <- as.data.frame(table(cut(df$Sl, breaks=seq(1,20, by=5))))
最佳答案
使用您的 df
tapply(df$Value, cut(df$Sl, 4), function(x) sum(x==0))
给
> tapply(df$Value, cut(df$Sl, 4), function(x) sum(x==0))
(0.981,5.75] (5.75,10.5] (10.5,15.2] (15.2,20]
1 2 2 1
在
cut
如果您愿意,您可以指定中断次数或中断本身,并且逻辑位于 tapply
中的函数定义中
关于R - 计算 bin 中特定值的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31981319/