【发布时间】:2020-05-02 17:25:21
【问题描述】:
我想总结一个分组变量,但我想得到总和作为每个组中数字的比例。这是一个例子:
创建以下数据框:
dat <- data.frame(year = c(rep(1970, 4), rep(1980, 4), rep(1990, 4)),
country = rep(1:4, 3),
change = c(0.1, 0.1, 0.1, -0.1, NA, 0.1, 0.1, 0.1, NA, NA, 0.1, 0.1))
> dat
year country change
1 1970 1 0.1
2 1970 2 0.1
3 1970 3 0.1
4 1970 4 -0.1
5 1980 1 NA
6 1980 2 0.1
7 1980 3 0.1
8 1980 4 0.1
9 1990 1 NA
10 1990 2 NA
11 1990 3 0.1
12 1990 4 0.1
我可以计算出发生积极变化的国家/地区的数量:
dat %>%
mutate(change.true = ifelse(change > 0, 1, 0)) %>%
group_by(year) %>%
summarise(count.positive = sum(change.true))
# A tibble: 3 x 2
year count.positive
<dbl> <dbl>
1 1970 3
2 1980 3
3 1990 2
这表明出现积极变化的国家/地区数量稳定或减少。然而,这是有数据的国家数量减少的结果(我知道我需要谨慎处理缺失的数据)。我想探讨的是有数据的国家的比例是如何变化的。基本上我想要这个:
data.frame(year = c(1970, 1980, 1990),
prop.positive = c(0.75, 1, 1))
year prop.positive
1 1970 0.75
2 1980 1.00
3 1990 1.00
如何修改汇总函数以便计算每个组的组大小?我很乐意用组大小改变另一列,然后计算比例,但不知道如何获得该组大小。不用说,我正在尝试为大量数据集执行此操作。
【问题讨论】: