# For lack of a better source:
who <- read.csv("https://github.com/anudeike/who-suicide-stats/raw/master/data/who_suicide_statistics.csv", stringsAsFactors = FALSE)
who_uk <- subset(who, country == "United Kingdom")
Давайте посмотрим на данные:
> str(who_uk)
'data.frame': 456 obs. of 6 variables:
$ country : chr "United Kingdom" "United Kingdom" "United Kingdom" "United Kingdom" ...
$ year : int 1979 1979 1979 1979 1979 1979 1979 1979 1979 1979 ...
$ sex : chr "female" "female" "female" "female" ...
$ age : chr "15-24 years" "25-34 years" "35-54 years" "5-14 years" ...
$ suicides_no: int 119 203 617 3 742 171 304 522 970 9 ...
$ population : int 4189200 3917300 6438700 4212200 6191200 2083600 4387000 3991400 6459700 4449000 ...
Поскольку данные разбиты на year
, sex
и age
, нам нужно сначала преобразовать / суммировать их. Делать это во время выполнения в ggplot2
не так уж и оптимально. Итак, как мы это делаем? Существуют более быстрые инструменты, но обработка данных с помощью dplyr
, вероятно, является одним из наиболее доступных методов. Давайте сделаем удар:
library(dplyr)
# All suicides
who_uk_all <- who_uk %>%
group_by(year) %>%
summarize(suicides_no = sum(suicides_no),
population = sum(population)) %>%
mutate(rate = 100000 * suicides_no/population)
# By sex
who_uk_sex <- who_uk %>%
group_by(year, sex) %>%
summarize(suicides_no = sum(suicides_no),
population = sum(population)) %>%
mutate(rate = 100000 * suicides_no / population)
Давайте построим это:
ggplot() +
geom_line(data = who_uk_all, aes(year, rate)) +
geom_line(data = who_uk_sex, aes(year, rate, color = sex))
Предостережение : и источник данных на вашем изображении, и способ его преобразования, вероятно, отличаются от данных ВОЗ, поэтому у нас также есть немного другой график (также, это Англия, не Великобритания). Более того, кажется действительно странным , что уровень самоубийств всех лиц выше, чем как среди мужчин, так и среди женщин . Дальнейшее исследование определенно оправдано.