【发布时间】:2014-10-22 14:29:59
【问题描述】:
我想根据除以范围的另一个变量值来计算观察次数。我能够对第一个变量(鸟类)进行分组,并且能够计算其观察次数,但是当我尝试获取第二个变量的观察次数时,我得到了错误的答案,如下所示。我该如何克服这个问题?
这是我的数据框示例:
dat <- read.table(text = " birds wolfs snakes
2 9 7
90 8 4
90 2 8
100 2 3
100 8 3
660 1 2
660 7 1
660 1 5
500 9 7
30 8 7
40 2 7
10 2 3
70 6 3
60 1 1
60 3 9
60 1 1 ",header = TRUE)
我运行这行代码来获取组:
dat$birdsrange <- cut(dat$birds, breaks=seq(0, 1000, 25))
比我添加了两行代码:
dat$mbirds <- with(dat, ave(birds, birdsrange, FUN=length))
dat$mwolfs <- with(dat, ave(wolfs, birdsrange, FUN=length))
所以我得到了这个输出:
birds wolfs snakes birdsrange mbirds mwolfs
1 2 9 7 (0,25] 2 2
2 90 8 4 (75,100] 4 4
3 90 2 8 (75,100] 4 4
4 100 2 3 (75,100] 4 4
5 100 8 3 (75,100] 4 4
6 660 1 2 (650,675] 3 3
7 660 7 1 (650,675] 3 3
8 660 1 5 (650,675] 3 3
9 500 9 7 (475,500] 1 1
10 30 8 7 (25,50] 2 2
11 40 2 7 (25,50] 2 2
12 10 2 3 (0,25] 2 2
13 70 6 3 (50,75] 4 4
14 60 1 1 (50,75] 4 4
15 60 3 9 (50,75] 4 4
16 60 1 1 (50,75] 4 4
“mbirds”计数很好,但是“mwolfs”很差,因为我预计该组会得到 16 个观察值:(0,25] 和其他组的“0”。我该如何解决这个问题? 期望的结果应该是:
range mbirds mwolfs
(0,25] 2 16
(25,50] 2 0
(50,75] 4 0
...
【问题讨论】:
-
为什么你认为 mwolfs 是 16 岁?我不太明白
-
@beginneR,因为没有包含超过 25 只狼的行
-
没错@David Arenburg
-
但是您的代码是基于birdrange(也适用于mwolfs)..所以这似乎是问题所在?
-
是的@beginneR