Я пытаюсь суммировать сгруппированные переменные, но я хочу получить сумму как пропорцию числа в каждой группе. Вот пример:
Создайте следующий фрейм данных:
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
Как мне изменить функцию суммирования, чтобы получить счетчик размера группы для каждой группы? Я был бы рад изменить другой столбец с размером группы, а затем рассчитать пропорцию, но не знаю, как получить этот размер группы. Само собой разумеется, что я пытаюсь сделать это для массивного набора данных.