Dieses Dokument beschreibt die Vorprozessierung und explorative Analyse des Datensatzes, der Grundlage des auf srf.ch veröffentlichten Artikels Wie gesund ist die Schweiz ist.
SRF Data legt Wert darauf, dass die Datenvorprozessierung und -Analyse nachvollzogen und überprüft werden kann. SRF Data glaubt an das Prinzip offener Daten, aber auch offener und nachvollziehbarer Methoden. Zum anderen soll es Dritten ermöglicht werden, auf dieser Vorarbeit aufzubauen und damit weitere Auswertungen oder Applikationen zu generieren.
Die Endprodukte des vorliegenden Scripts, neben der explorativen Analyse, sind (Datenbeschreibung siehe unten):
health_survey_2017.csv
: Datensatz Gesundheitsbefragung reduziert auf 17 Kategorien als CSVhealth_survey_2017.json
: Datensatz Gesundheitsbefragung reduziert auf 11 Kategorien als JSONDie Vorprozessierung und Analyse wurde im Statistikprogramm R vorgenommen. Das zugrunde liegende Script sowie die prozessierten Daten können unter diesem Link heruntergeladen werden. Durch Ausführen von main.Rmd
kann der hier beschriebene Prozess nachvollzogen und der für den Artikel verwendete Datensatz generiert werden. Dabei werden Daten aus dem Ordner input
eingelesen und Ergebnisse in den Ordner output
geschrieben.
SRF Data verwendet das rddj-template von Timo Grossenbacher als Grundlage für seine R-Scripts. Entstehen bei der Ausführung dieses Scripts Probleme, kann es helfen, die Anleitung von rddj-template zu studieren.
Debug-Informationen: This report was generated on 2019-04-10 14:40:02. R version: 3.5.3 on x86_64-apple-darwin15.6.0. For this report, CRAN packages as of 2019-03-01 were used.
Der Code für die vorliegende Datenprozessierung ist auf https://github.com/srfdata/2019-04-health zur freien Verwendung verfügbar.
2019-04-health von SRF Data ist lizenziert unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 4.0 International Lizenz.
Code & Daten von SRF Data sind unter http://srfdata.github.io verfügbar.
Die veröffentlichten Informationen sind sorgfältig zusammengestellt, erheben aber keinen Anspruch auf Aktualität, Vollständigkeit oder Richtigkeit. Es wird keine Haftung übernommen für Schäden, die durch die Verwendung dieses Scripts oder der daraus gezogenen Informationen entstehen. Dies gilt ebenfalls für Inhalte Dritter, die über dieses Angebot zugänglich sind.
health_survey_2017.json
, health_survey_2017.csv
Attribut | Typ | Beschreibung |
---|---|---|
group | String | Einteilung nach Geschlecht: Männer, Frauen |
subgroup | String | Einteilung nach Altersgruppe |
category | String | Kategoriebezeichnung in Englisch des ausgewählten Gesundheitsthemas |
year | String | Erhebungsjahr der Gesundheitsbefragung |
key | String | Antwortmöglichkeit, unterschiedlich je nach Thema |
value | Numeric | Entsprechender Wert für key |
→ input/tabellen_2017
Die Daten stammen aus der Schweizerischen Gesundheitsbefragung, die alle fünf Jahre seit 1992 durchgeführt wird. Die sechste Erhebung fand im Jahr 2017 statt und wurde Ende Februar 2019 publiziert. Für das vorliegende Projekt wurden die Standardtabellen 2017 verwendet. Insgesamt hat das BfS 86 Tabellen veröffentlicht. Es handelt sich dabei um Excel-Dateien, die auf den jeweiligen Sheets die Daten der vergangenen Erhebungen enthalten. Die Tabellen können beim Bundesamt für Statistik (BfS) heruntergeladen werden können.
Jede Tabelle enthält die Daten für ein Gesundheitsthema (zum Beispiel: Wie häufig trinken Sie normalerweise alkoholische Getränke?). Die Antwortmöglichkeiten (key) unterscheiden sich je nach Thema. In den Tabellen sind die Daten nach Sprachregion, Bildungshintergrund, Geschlecht und Alter unterschieden.
→ input/gesundheitsbefragung_glossar_2017.csv
Mit Hilfe des Glossar werden die Tabellen ausgewählt, die in diesem Skript analysiert wurden. Im Glossar sind der Dateiname der Tabelle, die englische Kategoriebezeichnung und die unterschiedlichen Antwortmöglichkeiten enthalten.
## [1] "package package:rmarkdown detached"
## Loading required package: knitr
## Loading required package: rstudioapi
# von https://mran.revolutionanalytics.com/web/packages/checkpoint/vignettes/using-checkpoint-with-knitr.html
# alle Packages, die nicht gebraucht werden,
# können hier entfernt werden (auskommentieren reicht nicht!)
# Wichtig: wenn neues Package installiert werden soll,
# scanForPackages = T setzen im checkpoint() call im nächsten Chunk
cat("
library(rstudioapi)
library(tidyverse) # ggplot2, dplyr, tidyr, readr, purrr, tibble
library(glue) # cooler string templating
library(magrittr) # pipes
library(scales) # scales for ggplot2
library(jsonlite) # json
library(lintr) # code linting, auf keinen Fall entfernen ;-)
library(styler) # code formatting
library(googlesheets) # googlesheets (replace with tidyverse/googlesheets4 asap)
library(rmarkdown) # muss für automatisches knitting
# in deploy.sh eingebunden werden",
file = "manifest.R")
# if checkpoint is not yet installed, install it (for people using this
# system for the first time)
if (!require(checkpoint)) {
if (!require(devtools)) {
install.packages("devtools", repos = "http://cran.us.r-project.org")
require(devtools)
}
devtools::install_github("RevolutionAnalytics/checkpoint",
ref = "v0.3.2", # could be adapted later,
# as of now (beginning of July 2017
# this is the current release on CRAN)
repos = "http://cran.us.r-project.org")
require(checkpoint)
}
## Loading required package: checkpoint
##
## checkpoint: Part of the Reproducible R Toolkit from Microsoft
## https://mran.microsoft.com/documents/rro/reproducibility/
# nolint start
if (!dir.exists("~/.checkpoint")) {
dir.create("~/.checkpoint")
}
# nolint end
# install packages for the specified CRAN snapshot date
checkpoint(snapshotDate = package_date,
project = path_to_wd,
verbose = T,
scanForPackages = T,
use.knitr = F,
R.version = R_version)
## Scanning for packages used in this project
## rmarkdown files found and will not be parsed. Set use.knitr = TRUE
## - Discovered 11 packages
## All detected packages already installed
## checkpoint process complete
## ---
rm(package_date)
source("manifest.R")
unlink("manifest.R")
sessionInfo()
## R version 3.5.3 Patched (2019-03-11 r76227)
## Platform: x86_64-apple-darwin15.6.0 (64-bit)
## Running under: macOS Mojave 10.14.3
##
## Matrix products: default
## BLAS: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRblas.0.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRlapack.dylib
##
## locale:
## [1] de_CH.UTF-8/de_CH.UTF-8/de_CH.UTF-8/C/de_CH.UTF-8/de_CH.UTF-8
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] rmarkdown_1.11 googlesheets_0.3.0 styler_1.1.0
## [4] lintr_1.0.3 jsonlite_1.6 scales_1.0.0
## [7] magrittr_1.5 glue_1.3.0 forcats_0.4.0
## [10] stringr_1.4.0 dplyr_0.8.0.1 purrr_0.3.0
## [13] readr_1.3.1 tidyr_0.8.2 tibble_2.0.1
## [16] ggplot2_3.1.0 tidyverse_1.2.1 checkpoint_0.4.0
## [19] rstudioapi_0.9.0 knitr_1.21
##
## loaded via a namespace (and not attached):
## [1] tidyselect_0.2.5 xfun_0.5 haven_2.1.0 lattice_0.20-38
## [5] colorspace_1.4-0 generics_0.0.2 htmltools_0.3.6 yaml_2.2.0
## [9] rlang_0.3.1 pillar_1.3.1 withr_2.1.2 modelr_0.1.4
## [13] readxl_1.3.0 plyr_1.8.4 munsell_0.5.0 gtable_0.2.0
## [17] cellranger_1.1.0 rvest_0.3.2 evaluate_0.13 rex_1.1.2
## [21] broom_0.5.1 Rcpp_1.0.0 backports_1.1.3 hms_0.4.2
## [25] digest_0.6.18 stringi_1.4.3 grid_3.5.3 cli_1.0.1
## [29] tools_3.5.3 lazyeval_0.2.1 crayon_1.3.4 pkgconfig_2.0.2
## [33] xml2_1.2.0 lubridate_1.7.4 assertthat_0.2.0 httr_1.4.0
## [37] R6_2.4.0 nlme_3.1-137 compiler_3.5.3
glossar_2017 <- read_csv("input/gesundheitsbefragung_glossar_2017.csv")
# create new function that tries to read spreadsheet but returns NA if not present
read_if_exists <- possibly(readxl::read_excel, data.frame())
# map over all rows of the glossar
data_2017 <- glossar_2017 %>%
pmap_dfr(function(filename, category, answers, comment) {
# map through all these years and try to read the corresponding sheet
c("1992", "1997", "2002", "2007", "2012", "2017") %>%
map_df(function(year) {
spreadsheet <- read_if_exists(
glue("input/tabellen_2017/su-d-14.02-ESS-{filename}_CH.xlsx"),
sheet = year,
col_names = FALSE
)
if (nrow(spreadsheet) > 0) {
# read topic from second row, first cell
topic <- unlist(spreadsheet[2, 1])
# rename columns
column_names <- str_split(answers, ", ", simplify = TRUE)
colnames(spreadsheet) <- c("group", "subgroup", column_names)
# drop columns at end which have name NA
spreadsheet <- spreadsheet[, 1:(length(column_names) + 2)]
# return
result <- spreadsheet %>%
fill(group) %>%
filter() %>%
filter(
!is.na(subgroup),
!str_detect(group, "^Alter$|^Geschlecht$"),
subgroup != "Gesamtbevölkerung"
) %>%
# add column to indicate question asked
mutate(
category = category,
topic = topic,
filename = filename,
year = as.numeric(year)
) %>%
gather(
key,
value,
-one_of(
"n",
"group",
"subgroup",
"filename",
"year",
"category",
"topic")
)
}
})
})
# answers from less than 30 people are not considered statistically reliable
data_2017 %<>%
filter(!str_detect(key, "_se$")) %>%
filter(key != "n_percent" & key != "total_population") %>%
mutate(
value = as.numeric(value),
year = as.numeric(year),
n = as.numeric(n),
too_few_values = (n * (value / 100)) < 30
)
## Warning: NAs durch Umwandlung erzeugt
# output years found
knitr::kable(
data_2017 %>%
# keep only unique values for year and topic
distinct(year, topic) %>%
# sort years
arrange(year) %>%
group_by(topic) %>%
# make one long string concatenated by commas for years
summarise(year = paste(year, collapse = ", "))
)
topic | year |
---|---|
Gesundheitssystem und Präventivmedizin / Verhütungsmittel / CONTRAC | 2002, 2007, 2012, 2017 |
Gesundheitszustand / Körperliche Beschwerden / SOMMEIL | 1997, 2002, 2007, 2012, 2017 |
Gesundheitszustand / Körperliche Beschwerden / SYMPTOMA | 1992, 1997, 2002, 2007, 2012, 2017 |
Gesundheitszustand / Körpermasse / BMI4 | 1992, 1997, 2002, 2007, 2012, 2017 |
Gesundheitszustand / Risikofaktoren HKL / HYPERTENS | 1992, 2002, 2007, 2012, 2017 |
Verhalten / Alkohol / ALCBINGETS | 2007, 2017 |
Verhalten / Alkohol / ALCCHRON3 | 1997, 2002, 2007, 2012, 2017 |
Verhalten / Alkohol / TALKO15 | 1992, 1997, 2002, 2007, 2012, 2017 |
Verhalten / Drogen / DROGCONS | 2002, 2007, 2012, 2017 |
Verhalten / Drogen / DURECONSTS | 2002, 2007, 2012, 2017 |
Verhalten / Drogen / HACHCONSTS | 2002, 2007, 2012, 2017 |
Verhalten / Ernährung / TERNA03 | 1992, 1997, 2002, 2007, 2012, 2017 |
Verhalten / Körperliche Aktivität / ACTPHY4 | 2002, 2007, 2012, 2017 |
Verhalten / Medikamente / CONSMEDIC | 1992, 1997, 2002, 2007, 2012, 2017 |
Verhalten / Medikamente / TMEKO01 | 1992, 1997, 2002, 2007, 2012, 2017 |
Verhalten / Tabak / NICOT5 | 1992, 1997, 2002, 2007, 2012, 2017 |
Verhalten / Tabak / TABAC3 | 1992, 1997, 2002, 2007, 2012, 2017 |
# data from 2017
categories_2017 <- unique(data_2017$category)
selected_data_2017 <- data_2017 %>%
filter(category %in% categories_2017)
# Make variables for selected data
smoke <- selected_data_2017 %>%
filter(category == "smoke")
smoke_amount <- selected_data_2017 %>%
filter(category == "smoke_amount")
body_bmi <- selected_data_2017 %>%
filter(category == "body_bmi")
drink_alcohol <- selected_data_2017 %>%
filter(category == "drink_alcohol")
risk_alcohol <- selected_data_2017 %>%
filter(category == "risk_alcohol")
binge_alcohol <- selected_data_2017 %>%
filter(category == "binge_alcohol")
drugs_hard <- selected_data_2017 %>%
filter(category == "drugs_hard")
drugs_soft <- selected_data_2017 %>%
filter(category == "drugs_soft")
bloodpressure <- selected_data_2017 %>%
filter(category == "bloodpressure")
activity <- selected_data_2017 %>%
filter(category == "activity")
problems_body <- selected_data_2017 %>%
filter(category == "problems_body")
eat_meat <- selected_data_2017 %>%
filter(category == "eat_meat")
medicament_use <- selected_data_2017 %>%
filter(category == "medicament_use")
problems_sleep <- selected_data_2017 %>%
filter(category == "problems_sleep")
birth_control <- selected_data_2017 %>%
filter(category == "birth_control")
# function to create area charts with factors in the right order, used for 2017 data
create_areachart_with_factors <- function(topic, age, factors, title) {
ggplot(
topic %>%
filter(
subgroup == age
) %>%
mutate(
key = factor(
key,
levels = factors
)
),
aes(
x = year,
y = value,
fill = key
)
) +
geom_area() +
facet_wrap(c("group"), ncol = 2) +
scale_fill_brewer(palette = "Set1") +
theme_minimal() +
labs(
title = paste0(title, age, "en")
)
}
# function to create bar charts without factors, used for 2017 data
create_barchart_2017 <- function(topic, age, title) {
ggplot(
topic %>%
filter(
subgroup == age
),
aes(
x = year,
y = value,
fill = key,
label = percent(value / 100)
)
) +
geom_bar(stat = "identity") +
geom_text(
position = position_stack(vjust = 0.5),
color = "white",
size = 3
) +
scale_fill_brewer(palette = "Set1") +
facet_wrap(c("group", "subgroup"), ncol = 2) +
theme_minimal() +
labs(
title = paste0(title, age, "e")
)
}
# function to create bar charts with factors in the right order, used for 2017 data
create_barchart_with_factors_2017 <- function(topic, age, factors, title) {
ggplot(
topic %>%
filter(
subgroup == age
) %>%
mutate(
key = factor(
key,
levels = factors
)
),
aes(
x = year,
y = value,
fill = key,
label = percent(value / 100)
)
) +
geom_bar(stat = "identity") +
geom_text(
position = position_stack(vjust = 0.5),
color = "white",
size = 3
) +
scale_fill_brewer(palette = "Set1") +
facet_wrap(c("group", "subgroup"), ncol = 2) +
theme_minimal() +
labs(
title = paste0(title, age, "e")
)
}
# function to extract data from a specific topic, key and group, used for 2017 data
value_to_be_extracted <- function(topic, age, selected_key, selected_group) {
topic %>%
filter(
subgroup == age,
group == selected_group,
key == selected_key
)
}
age <- "15-24-jährig"
# adipositas
# nolint start
adipositas_men <- value_to_be_extracted(body_bmi, age, "adipositas", "Männer")
adipositas_men_1992 <- adipositas_men[adipositas_men$year == "1992", ]$value
adipositas_men_2017 <- adipositas_men[adipositas_men$year == "2017", ]$value
adipositas_women <- value_to_be_extracted(body_bmi, age, "adipositas", "Frauen")
adipositas_women_1992 <- adipositas_women[adipositas_women$year == "1992", ]$value
adipositas_women_2017 <- adipositas_women[adipositas_women$year == "2017", ]$value
# nolint end
#drink alcohol
alk_men <- value_to_be_extracted(drink_alcohol, age, "everyday", "Männer")
alk_men_1992 <- alk_men[alk_men$year == "1992", ]$value
alk_men_2017 <- alk_men[alk_men$year == "2017", ]$value
alk_women <- value_to_be_extracted(drink_alcohol, age, "everyday", "Frauen")
alk_women_1992 <- alk_women[alk_women$year == "1992", ]$value
alk_women_2017 <- alk_women[alk_women$year == "2017", ]$value
Für die visuelle Analyse wurden je nach Altersgruppe unterschiedliche Themen ausgewählt. Die Analysen sind nach Altersgruppe gegliedert.
Für diese Altersgruppe wurden die Themen BMI, Rauchen, Alkohol, Fleisch-, harter Drogenkonsum und körperliche Aktivität ausgewählt.
Der Anteil der adipösen Männer nahm um 4 Prozentpunkte zu. Bei den Frauen hat sich der Anteil um 2.2 Prozentpunkte vergrössert.
Der Anteil Raucher bleibt stabil. Die Gruppe der täglichen Alkoholkonsumenten wurde bei den Männern deutlich kleiner, von 7.6 Prozent im Jahr 1992 auf 1.768 Prozent 2017.
Der tägliche Fleischkonsum nimmt bei den Männern leicht ab. Ausserdem sind die Männer trainierter. Der Anteil Personen, die noch nie harte Drogen genommemn haben wir kleiner.
age <- "15-24-jährig"
create_barchart_with_factors_2017(body_bmi, age, c(
"adipositas",
"overweight",
"normalweight",
"underweight"),
"BMI / Gewicht der "
)
create_barchart_with_factors_2017(smoke, age, c(
"no_smoker",
"former_smoker",
"smoker"),
"Raucher "
)
create_barchart_with_factors_2017(smoke_amount, age, c(
"no_smoker",
"less_1_cigarette_day",
"1_9_cigarettes_day",
"10_19_cigarettes_day",
"20_plus_cigarettes_day"),
"Anzahl Zigaretten "
)
create_barchart_with_factors_2017(drink_alcohol, age, c(
"never",
"less_1_time_week",
"1_2_times_week",
"3_6_times_week",
"everyday"),
"Alkoholkonsum der "
)
create_barchart_with_factors_2017(risk_alcohol, age, c(
"high",
"low",
"no_alk"),
"Risikoreicher Alkoholkonsum der "
)
create_barchart_with_factors_2017(binge_alcohol, age, c(
"once_month",
"less_1_month",
"never",
"abstinent"),
"Binge-Drinking der "
)
create_barchart_with_factors_2017(activity, age, c(
"not_active",
"semi_active",
"active",
"trained"),
"Körperliche Aktivität der "
)
create_barchart_with_factors_2017(eat_meat, age, c(
"everyday",
"5_6_times_week",
"4_times_week",
"1_3_week",
"less"),
"Fleischkonsum der "
)
create_barchart_2017(drugs_hard, age, "Konsum harter Drogen bei ")
create_barchart_with_factors_2017(drugs_soft, age, c(
"last_30_days",
"last_12",
"longer",
"never"),
"Konsum Drogen (inkl. Cannabis) bei "
)
age <- "25-34-jährig"
#adipositas
# nolint start
adipositas_men <- value_to_be_extracted(body_bmi, age, "adipositas", "Männer")
adipositas_men_1992 <- adipositas_men[adipositas_men$year == "1992", ]$value
adipositas_men_2017 <- adipositas_men[adipositas_men$year == "2017", ]$value
adipositas_women <- value_to_be_extracted(body_bmi, age, "adipositas", "Frauen")
adipositas_women_1992 <- adipositas_women[adipositas_women$year == "1992", ]$value
adipositas_women_2017 <- adipositas_women[adipositas_women$year == "2017", ]$value
# nolint end
#drink alcohol
alk_men <- value_to_be_extracted(body_bmi, age, "everyday", "Männer")
alk_men_1992 <- alk_men[alk_men$year == "1992", ]$value
alk_men_2017 <- alk_men[alk_men$year == "2017", ]$value
alk_women <- value_to_be_extracted(body_bmi, age, "everyday", "Frauen")
alk_women_1992 <- alk_women[alk_women$year == "1992", ]$value
alk_women_2017 <- alk_women[alk_women$year == "2017", ]$value
#drugs
drugs_men <- value_to_be_extracted(drugs_hard, age, "never", "Männer")
drugs_men_1997 <- drugs_men[drugs_men$year == "1997", ]$value
drugs_men_2017 <- drugs_men[drugs_men$year == "2017", ]$value
drugs_women <- value_to_be_extracted(drugs_hard, age, "never", "Frauen")
drugs_women_1997 <- drugs_women[drugs_women$year == "1997", ]$value
drugs_women_2017 <- drugs_women[drugs_women$year == "2017", ]$value
#meat
meat_women <- value_to_be_extracted(eat_meat, age, "never", "Frauen")
meat_women_1997 <- meat_women[meat_women$year == "1992", ]$value
meat_women_2017 <- meat_women[meat_women$year == "2017", ]$value
Für diese Altersgruppe wurden die Themen BMI, Rauchen und Anzahl Zigaretten, Alkohol, Fleisch-, harter Drogenkonsum und körperliche Aktivität ausgewählt.
Der Anteil der adipösen Männer nahm um 5.3 Prozentpunkte zu. Bei den Frauen hat sich der Anteil um 3.3 Prozentpunkte vergrössert. Der Anteil untergewichtiger Frauen hat abgenommen. Der Anteil Frauen, die nie Fleisch essen, hat zugenommen um Prozentpunkte.
Der Anteil Raucher bleibt stabil. Raucher konsumieren aber weniger Zigratten. Die Gruppe der täglichen Alkoholkonsumenten wurde bei den Männern deutlich kleiner, von Prozent im Jahr 1992 auf Prozent 2017.
Der Konsum harter Drogen nimmt bei Frauen und Männern zu. Im Jahr 1997 hatten Prozent der befragten Frauen bereits einaml in ihrem Leben harte Dorgen konusmiert, 2017 waren es 7.4 Prozent. Bei den Männern waren es 2017 13.1 Prozent.
age <- "25-34-jährig"
create_barchart_with_factors_2017(body_bmi, age, c(
"adipositas",
"overweight",
"normalweight",
"underweight"),
"BMI / Gewicht der "
)
create_barchart_with_factors_2017(smoke, age, c(
"no_smoker",
"former_smoker",
"smoker"),
"Raucher "
)
create_barchart_with_factors_2017(smoke_amount, age, c(
"no_smoker",
"less_1_cigarette_day",
"1_9_cigarettes_day",
"10_19_cigarettes_day",
"20_plus_cigarettes_day"),
"Anzahl Zigaretten "
)
create_barchart_with_factors_2017(drink_alcohol, age, c(
"never",
"less_1_time_week",
"1_2_times_week",
"3_6_times_week",
"everyday"),
"Alkoholkonsum der "
)
create_barchart_with_factors_2017(risk_alcohol, age, c(
"high",
"low",
"no_alk"),
"Risikoreicher Alkoholkonsum der "
)
create_barchart_with_factors_2017(binge_alcohol, age, c(
"once_month",
"less_1_month",
"never",
"abstinent"),
"Binge-Drinking der "
)
create_barchart_with_factors_2017(activity, age, c(
"not_active",
"semi_active",
"active",
"trained"),
"Körperliche Aktivität der "
)
create_barchart_with_factors_2017(eat_meat, age, c(
"everyday",
"5_6_times_week",
"4_times_week",
"1_3_week",
"less"),
"Fleischkonsum der "
)
create_barchart_2017(drugs_hard, age, "Konsum harter Drogen bei ")
create_barchart_with_factors_2017(drugs_soft, age, c(
"last_30_days",
"last_12",
"longer",
"never"),
"Konsum Drogen (inkl. Cannabis) bei "
)
age <- "35-44-jährig"
#adipositas
# nolint start
adipositas_men <- value_to_be_extracted(body_bmi, age, "adipositas", "Männer")
adipositas_men_1992 <- adipositas_men[adipositas_men$year == "1992", ]$value
adipositas_men_2017 <- adipositas_men[adipositas_men$year == "2017", ]$value
adipositas_women <- value_to_be_extracted(body_bmi, age, "adipositas", "Frauen")
adipositas_women_1992 <- adipositas_women[adipositas_women$year == "1992", ]$value
adipositas_women_2017 <- adipositas_women[adipositas_women$year == "2017", ]$value
# nolint end
#drink alcohol
alk_men <- value_to_be_extracted(body_bmi, age, "everyday", "Männer")
alk_men_1992 <- alk_men[alk_men$year == "1992", ]$value
alk_men_2017 <- alk_men[alk_men$year == "2017", ]$value
alk_women <- value_to_be_extracted(body_bmi, age, "everyday", "Frauen")
alk_women_1992 <- alk_women[alk_women$year == "1992", ]$value
alk_women_2017 <- alk_women[alk_women$year == "2017", ]$value
#drugs
drugs_men <- value_to_be_extracted(drugs_hard, age, "never", "Männer")
drugs_men_1997 <- drugs_men[drugs_men$year == "1997", ]$value
drugs_men_2017 <- drugs_men[drugs_men$year == "2017", ]$value
Für diese Altersgruppe wurden die Themen BMI, Rauchen und Anzahl Zigaretten, Alkohol, Fleisch-, harter Drogenkonsum und körperliche Aktivität und Beschwerden ausgewählt.
Der Anteil der adipösen Männer nahm um 5.7 Prozentpunkte zu. Bei den Frauen hat sich der Anteil um 4.8 Prozentpunkte vergrössert. Der Anteil untergewichtiger Frauen wurde kleiner. Der intensive Fleischkonsum nimmt ab. Der Anteil der inaktiven Personen wird immer kleiner.
Der Anteil Raucher bleibt stabil. Raucher konsumieren aber weniger Zigratten. Die Gruppe der täglichen Alkoholkonsumenten wurde bei den Männern deutlich kleiner, von Prozent im Jahr 1992 auf Prozent 2017. Auch der Anteil der täglich alkoholtrinkenden Frauen ist geschrumpft:
Der Konsum harter Drogen nimmt bei den Männern zu. Im Jahr 1997 hatten Prozent bereits einaml in ihrem Leben harte Dorgen konusmiert, 2017 waren es 14.1 Prozent.
age <- "35-44-jährig"
create_barchart_with_factors_2017(body_bmi, age, c(
"adipositas",
"overweight",
"normalweight",
"underweight"),
"BMI / Gewicht der "
)
create_barchart_with_factors_2017(smoke, age, c(
"no_smoker",
"former_smoker",
"smoker"),
"Raucher "
)
create_barchart_with_factors_2017(smoke_amount, age, c(
"no_smoker",
"less_1_cigarette_day",
"1_9_cigarettes_day",
"10_19_cigarettes_day",
"20_plus_cigarettes_day"),
"Anzahl Zigaretten "
)
create_barchart_with_factors_2017(drink_alcohol, age, c(
"never",
"less_1_time_week",
"1_2_times_week",
"3_6_times_week",
"everyday"),
"Alkoholkonsum der ")
create_barchart_with_factors_2017(risk_alcohol, age, c(
"high",
"low",
"no_alk"),
"Risikoreicher Alkoholkonsum der "
)
create_barchart_with_factors_2017(binge_alcohol, age, c(
"once_month",
"less_1_month",
"never",
"abstinent"),
"Binge-Drinking der "
)
create_barchart_with_factors_2017(activity, age, c(
"not_active",
"semi_active",
"active",
"trained"),
"Körperliche Aktivität der "
)
create_barchart_with_factors_2017(eat_meat, age, c(
"everyday",
"5_6_times_week",
"4_times_week",
"1_3_week",
"less"),
"Fleischkonsum der "
)
create_barchart_2017(drugs_hard, age, "Konsum harter Drogen bei ")
create_barchart_with_factors_2017(drugs_soft, age, c(
"last_30_days",
"last_12",
"longer",
"never"),
"Konsum Drogen (inkl. Cannabis) bei ")
create_barchart_2017(problems_body, age, "Körperliche Beschwerden bei ")
age <- "45-54-jährig"
#adipositas
adipositas_men <- value_to_be_extracted(body_bmi, age, "adipositas", "Männer")
# nolint start
adipositas_men_1992 <- adipositas_men[adipositas_men$year == "1992", ]$value
adipositas_men_2017 <- adipositas_men[adipositas_men$year == "2017", ]$value
# nolint end
adipositas_women <- value_to_be_extracted(body_bmi, age, "adipositas", "Frauen")
# nolint start
adipositas_women_1992 <- adipositas_women[adipositas_women$year == "1992", ]$value
adipositas_women_2017 <- adipositas_women[adipositas_women$year == "2017", ]$value
# nolint end
#drink alcohol
alk_men <- value_to_be_extracted(body_bmi, age, "everyday", "Männer")
alk_men_1992 <- alk_men[alk_men$year == "1992", ]$value
alk_men_2017 <- alk_men[alk_men$year == "2017", ]$value
alk_women <- value_to_be_extracted(body_bmi, age, "everyday", "Frauen")
alk_women_1992 <- alk_women[alk_women$year == "1992", ]$value
alk_women_2017 <- alk_women[alk_women$year == "2017", ]$value
Für diese Altersgruppe wurden die Themen BMI, Rauchen und Anzahl Zigaretten, Alkohol, Fleisch-, körperliche Aktivität und Beschwerden ausgewählt.
Der Anteil der adipösen Männer nahm um 5.6 Prozentpunkte zu. Bei den Frauen hat sich der Anteil um 6.7 Prozentpunkte vergrössert. Der Anteil untergewichtiger Frauen hat abgenommen. Fleisch wird weniger häufig gegessen.
Im Jahr 2017 war diese Generation aktiver, körperliche Beschwerden haben leicht abgenommen.
Der Anteil Raucher bleibt stabil. Raucher konsumieren aber weniger Zigratten. Die Gruppe der täglichen Alkoholkonsumenten wurde bei den Männern deutlich kleiner, von Prozent im Jahr 1992 auf Prozent 2017. Auch der Anteil der täglich alkoholtrinkenden Frauen ist geschrumpft:
age <- "45-54-jährig"
create_barchart_with_factors_2017(body_bmi, age, c(
"adipositas",
"overweight",
"normalweight",
"underweight"),
"BMI / Gewicht der "
)
create_barchart_with_factors_2017(smoke, age, c(
"no_smoker",
"former_smoker",
"smoker"),
"Raucher "
)
create_barchart_with_factors_2017(smoke_amount, age, c(
"no_smoker",
"less_1_cigarette_day",
"1_9_cigarettes_day",
"10_19_cigarettes_day",
"20_plus_cigarettes_day"),
"Anzahl Zigaretten "
)
create_barchart_with_factors_2017(drink_alcohol, age, c(
"never",
"less_1_time_week",
"1_2_times_week",
"3_6_times_week",
"everyday"),
"Alkoholkonsum der "
)
create_barchart_with_factors_2017(risk_alcohol, age, c(
"high",
"low",
"no_alk"),
"Risikoreicher Alkoholkonsum der "
)
create_barchart_with_factors_2017(binge_alcohol, age, c(
"once_month",
"less_1_month",
"never",
"abstinent"),
"Binge-Drinking der "
)
create_barchart_with_factors_2017(activity, age, c(
"not_active",
"semi_active",
"active",
"trained"),
"Körperliche Aktivität der "
)
create_barchart_with_factors_2017(eat_meat, age, c(
"everyday",
"5_6_times_week",
"4_times_week",
"1_3_week",
"less"),
"Fleischkonsum der "
)
create_barchart_2017(drugs_hard, age, "Konsum harter Drogen bei ")
create_barchart_with_factors_2017(drugs_soft, age, c(
"last_30_days",
"last_12",
"longer",
"never"),
"Konsum Drogen (inkl. Cannabis) bei "
)
create_barchart_2017(problems_body, age, "Körperliche Beschwerden bei ")
# nolint start
create_barchart_2017(medicament_use, age,
"Haben Sie in den letzten 7 Tagen ein Medikament genommen? ")
# nolint end
age <- "55-64-jährig"
#adipositas
adipositas_men <- value_to_be_extracted(body_bmi, age, "adipositas", "Männer")
# nolint start
adipositas_men_1992 <- adipositas_men[adipositas_men$year == "1992", ]$value
adipositas_men_2017 <- adipositas_men[adipositas_men$year == "2017", ]$value
# nolint end
adipositas_women <- value_to_be_extracted(body_bmi, age, "adipositas", "Frauen")
# nolint start
adipositas_women_1992 <- adipositas_women[adipositas_women$year == "1992", ]$value
adipositas_women_2017 <- adipositas_women[adipositas_women$year == "2017", ]$value
# nolint end
#drink alcohol
alk_men <- value_to_be_extracted(body_bmi, age, "everyday", "Männer")
alk_men_1992 <- alk_men[alk_men$year == "1992", ]$value
alk_men_2017 <- alk_men[alk_men$year == "2017", ]$value
alk_women <- value_to_be_extracted(body_bmi, age, "everyday", "Frauen")
# nolint start
alk_women_1992 <- alk_women[alk_women$year == "1992", ]$value
alk_women_2017 <- alk_women[alk_women$year == "2017", ]$value
# nolint end
Für diese Altersgruppe wurden die Themen BMI, Alkohol und Fleischkonsum, Medikamentenkonsum, Schlafprobleme, körperliche Aktivität und Beschwerden ausgewählt.
Der Anteil der adipösen Männer nahm um 6.7 Prozentpunkte zu. Bei den Frauen hat sich der Anteil um 6.6 Prozentpunkte vergrössert. Fleisch wird weniger häufig gegessen.
Im Jahr 2017 war diese Generation aktiver, körperliche Beschwerden sind gleich ausgesprägt geblieben. Mässige Schlafprobleme haben abgenommen, pathologische Schlafprobleme haben bei den Frauen zugenommen. Männer konsumieren mehr Medikamente.
Die Gruppe der täglichen Alkoholkonsumenten wurde bei den Männern deutlich kleiner, von Prozent im Jahr 1992 auf Prozent 2017. Auch der Anteil der täglich alkoholtrinkenden Frauen ist geschrumpft: minus Prozentpunkte.
age <- "55-64-jährig"
create_barchart_with_factors_2017(body_bmi, age, c(
"adipositas",
"overweight",
"normalweight",
"underweight"),
"BMI / Gewicht der "
)
create_barchart_with_factors_2017(smoke, age, c(
"no_smoker",
"former_smoker",
"smoker"),
"Raucher "
)
create_barchart_with_factors_2017(smoke_amount, age, c(
"no_smoker",
"less_1_cigarette_day",
"1_9_cigarettes_day",
"10_19_cigarettes_day",
"20_plus_cigarettes_day"),
"Anzahl Zigaretten "
)
create_barchart_with_factors_2017(drink_alcohol, age, c(
"never",
"less_1_time_week",
"1_2_times_week",
"3_6_times_week",
"everyday"),
"Alkoholkonsum der "
)
create_barchart_with_factors_2017(risk_alcohol, age, c(
"high",
"low",
"no_alk"),
"Risikoreicher Alkoholkonsum der "
)
create_barchart_with_factors_2017(binge_alcohol, age, c(
"once_month",
"less_1_month",
"never",
"abstinent"),
"Binge-Drinking der "
)
create_barchart_with_factors_2017(activity, age, c(
"not_active",
"semi_active",
"active",
"trained"),
"Körperliche Aktivität der "
)
create_barchart_with_factors_2017(eat_meat, age, c(
"everyday",
"5_6_times_week",
"4_times_week",
"1_3_week",
"less"),
"Fleischkonsum der "
)
create_barchart_2017(drugs_hard, age, "Konsum harter Drogen bei ")
## Warning: Removed 2 rows containing missing values (position_stack).
## Warning: Removed 2 rows containing missing values (position_stack).
create_barchart_with_factors_2017(drugs_soft, age, c(
"last_30_days",
"last_12",
"longer",
"never"),
"Konsum Drogen (inkl. Cannabis) bei "
)
create_barchart_2017(problems_body, age, "Körperliche Beschwerden bei ")
# nolint start
create_barchart_2017(medicament_use, age, "Haben Sie in den letzten 7 Tagen ein Medikament genommen? ")
create_barchart_with_factors_2017(problems_sleep, age, c(
"none_light",
"medium",
"pathological"),
"Schlafprobleme bei "
)
# nolint end
age <- "65-74-jährig"
#adipositas
adipositas_men <- value_to_be_extracted(body_bmi, age, "adipositas", "Männer")
adipositas_men_1992 <- adipositas_men[adipositas_men$year == "1992", ]$value
adipositas_men_2017 <- adipositas_men[adipositas_men$year == "2017", ]$value
adipositas_women <- value_to_be_extracted(body_bmi, age, "adipositas", "Frauen")
# nolint start
adipositas_women_1992 <- adipositas_women[adipositas_women$year == "1992", ]$value
adipositas_women_2017 <- adipositas_women[adipositas_women$year == "2017", ]$value
# nolint end
#drink alcohol
alk_men <- value_to_be_extracted(body_bmi, age, "everyday", "Männer")
alk_men_1992 <- alk_men[alk_men$year == "1992", ]$value
alk_men_2017 <- alk_men[alk_men$year == "2017", ]$value
alk_women <- value_to_be_extracted(body_bmi, age, "everyday", "Frauen")
alk_women_1992 <- alk_women[alk_women$year == "1992", ]$value
alk_women_2017 <- alk_women[alk_women$year == "2017", ]$value
Für diese Altersgruppe wurden die Themen BMI, Alkohol-, Fleisch- und Medikamentenkonsum, Bluthochdruck, Schlafprobleme, körperliche Aktivität und Beschwerden ausgewählt.
Der Anteil der adipösen Männer nahm um 8.3 Prozentpunkte zu. Bei den Frauen hat sich der Anteil um 5.8 Prozentpunkte vergrössert. Fleisch wird weniger häufig gegessen.
Im Jahr 2017 war diese Generation aktiver, körperliche Beschwerden wurden etwas weniger. Schlafprobleme haben abgenommen. Männer konsumieren mehr Medikamente. Die Anzahl Personen mit Bluthochdruck nimmt leicht ab.
Die Gruppe der Alkoholabstinenten Männer wurde kleiner, von Prozent im Jahr 1992 auf Prozent 2017. Auch der Anteil der abstinenten Frauen ist geschrumpft: minus Prozentpunkte.
age <- "65-74-jährig"
create_barchart_with_factors_2017(body_bmi, age, c(
"adipositas",
"overweight",
"normalweight",
"underweight"),
"BMI / Gewicht der "
)
create_barchart_with_factors_2017(smoke, age, c(
"no_smoker",
"former_smoker",
"smoker"),
"Raucher "
)
create_barchart_with_factors_2017(smoke_amount, age, c(
"no_smoker",
"less_1_cigarette_day",
"1_9_cigarettes_day",
"10_19_cigarettes_day",
"20_plus_cigarettes_day"),
"Anzahl Zigaretten "
)
create_barchart_with_factors_2017(drink_alcohol, age, c(
"never",
"less_1_time_week",
"1_2_times_week",
"3_6_times_week",
"everyday"),
"Alkoholkonsum der "
)
create_barchart_with_factors_2017(binge_alcohol, age, c(
"once_month",
"less_1_month",
"never",
"abstinent"),
"Binge-Drinking der "
)
create_barchart_with_factors_2017(risk_alcohol, age, c(
"high",
"low",
"no_alk"),
"Risikoreicher Alkoholkonsum der "
)
create_barchart_with_factors_2017(activity, age, c(
"not_active",
"semi_active",
"active",
"trained"),
"Körperliche Aktivität der "
)
create_barchart_with_factors_2017(eat_meat, age, c(
"everyday",
"5_6_times_week",
"4_times_week",
"1_3_week",
"less"),
"Fleischkonsum der ")
create_barchart_2017(problems_body, age, "Körperliche Beschwerden bei ")
# nolint start
create_barchart_2017(medicament_use, age, "Haben Sie in den letzten 7 Tagen ein Medikament genommen? ")
create_barchart_with_factors_2017(problems_sleep, age, c(
"none_light",
"medium",
"pathological"),
"Schlafprobleme bei "
)
#nolint end
create_barchart_2017(bloodpressure, age, "Hoher Blutdruck bei ")
age <- "75+ -jährig"
# nolint start
adipositas_men <- value_to_be_extracted(body_bmi, age, "adipositas", "Männer")
adipositas_men_1992 <-adipositas_men[adipositas_men$year == "1992", ]$value
adipositas_men_2017 <-adipositas_men[adipositas_men$year == "2017", ]$value
adipositas_women <- value_to_be_extracted(body_bmi, age, "adipositas", "Frauen")
adipositas_women_1992 <-adipositas_women[adipositas_women$year == "1992", ]$value
adipositas_women_2017 <-adipositas_women[adipositas_women$year == "2017", ]$value
alk_men <- value_to_be_extracted(body_bmi, age, "everyday", "Männer")
alk_men_1992 <- alk_men[alk_men$year == "1992", ]$value
alk_men_2017 <- alk_men[alk_men$year == "2017", ]$value
alk_women <- value_to_be_extracted(body_bmi, age, "everyday", "Frauen")
alk_women_1992 <- alk_women[alk_women$year == "1992" , ]$value
alk_women_2017 <- alk_women[alk_women$year == "2017" , ]$value
# nolint end
Für diese Altersgruppe wurden die Themen BMI, Alkohol-, Fleisch- und Medikamentenkonsum, Bluthochdruck, Schlafprobleme, körperliche Aktivität und Beschwerden ausgewählt.
Der Anteil der adipösen Männer nahm um 5.2 Prozentpunkte zu. Bei den Frauen hat sich der Anteil um 5.4 Prozentpunkte vergrössert. Fleisch wird weniger häufig gegessen.
Im Jahr 2017 war diese Generation aktiver. Schlafprobleme haben bei den Frauen abgenommen. Männer und Frauen konsumieren mehr Medikamente als noch 1992. Bluthochdruck nimmt bei Frauen leicht zu, bei den Männern ab.
Die Gruppe der Alkoholabstinenten Frauen wurde kleiner, von Prozent im Jahr 1992 auf Prozent 2017.
age <- "75+ -jährig"
create_barchart_with_factors_2017(body_bmi, age, c(
"adipositas",
"overweight",
"normalweight",
"underweight"),
"BMI / Gewicht der "
)
create_barchart_with_factors_2017(smoke, age, c(
"no_smoker",
"former_smoker",
"smoker"),
"Raucher "
)
create_barchart_with_factors_2017(smoke_amount, age, c(
"no_smoker",
"less_1_cigarette_day",
"1_9_cigarettes_day",
"10_19_cigarettes_day",
"20_plus_cigarettes_day"),
"Anzahl Zigaretten "
)
create_barchart_with_factors_2017(drink_alcohol, age, c(
"never",
"less_1_time_week",
"1_2_times_week",
"3_6_times_week",
"everyday"),
"Alkoholkonsum der ")
create_barchart_with_factors_2017(binge_alcohol, age, c(
"once_month",
"less_1_month",
"never",
"abstinent"),
"Binge-Drinking der "
)
create_barchart_with_factors_2017(risk_alcohol, age, c(
"high",
"low",
"no_alk"),
"Risikoreicher Alkoholkonsum der ")
create_barchart_with_factors_2017(activity, age, c(
"not_active",
"semi_active",
"active",
"trained"),
"Körperliche Aktivität der "
)
create_barchart_with_factors_2017(eat_meat, age, c(
"everyday",
"5_6_times_week",
"4_times_week",
"1_3_week",
"less"),
"Fleischkonsum der "
)
create_barchart_2017(problems_body, age, "Körperliche Beschwerden bei ")
create_barchart_2017(medicament_use, age,
"Haben Sie in den letzten 7 Tagen ein Medikament genommen? "
)
create_barchart_with_factors_2017(problems_sleep, age, c(
"none_light",
"medium",
"pathological"),
"Schlafprobleme bei "
)
create_barchart_2017(bloodpressure, age, "Hoher Blutdruck bei ")
Hier werden die CSV- und die JSON-Datei geschrieben, welche im Kapitel Datenbeschreibung genauer spezifiziert werden.
# regrouping meat
regrouping_meat <- selected_data_2017 %>%
filter(category == "eat_meat") %>%
mutate(key = ifelse(key %in% c(
"1_3_week",
"less"),
"below_3", "above_3")) %>%
group_by_at(vars(-value, -too_few_values)) %>%
summarise(value = sum(value))
# regrouping drugs
regrouping_drugs <- selected_data_2017 %>%
filter(category == "drugs_hard") %>%
mutate(key = ifelse(key %in% c("last_12", "longer"), "once", "never")) %>%
group_by_at(vars(-value, -too_few_values)) %>%
summarise(value = sum(value))
# regrouping cannabis
regrouping_cannabis <- selected_data_2017 %>%
filter(category == "cannabis") %>%
mutate(key = ifelse(key %in% c(
"last_30_days",
"last_12",
"longer"),
"cannabis_smoked", "never")) %>%
group_by_at(vars(-value, -too_few_values)) %>%
summarise(value = sum(value))
# regrouping smoke: former smokers -> non smokers
regrouping_smoke <- selected_data_2017 %>%
filter(category == "smoke") %>%
mutate(key = ifelse(key %in% c("former_smoker"), "no_smoker", key)) %>%
group_by_at(vars(-value, -too_few_values)) %>%
summarise(value = sum(value))
# remove meat data and append new one
selected_data_2017 %<>%
filter(!category %in% c("eat_meat", "drugs_hard", "cannabis", "smoke")) %>%
bind_rows(regrouping_meat) %>%
bind_rows(regrouping_drugs) %>%
bind_rows(regrouping_cannabis) %>%
bind_rows(regrouping_smoke)
# clean up
rm(
regrouping_meat,
regrouping_drugs,
regrouping_cannabis,
regrouping_smoke
)
selected_data_2017 %<>% mutate(
subgroup = str_replace_all(subgroup, "\\+ -", "+-")
)
write_csv(
selected_data_2017 %>%
filter(
category %in% categories_2017,
group == "Männer" | group == "Frauen",
str_detect(subgroup, "jährig$")
) %>%
select(group, subgroup, category, year, key, value) %>%
mutate(value = value / 100),
"output/health_survey_2017.csv"
)
# select data for interactive, only categories where a chart is displayed
categories_export_interactive <- c(
"smoke",
"activity",
"problems_sleep",
"body_bmi",
"bloodpressure",
"drugs_hard",
"problems_body",
"drink_alcohol",
"cannabis",
"medicament_use",
"eat_meat"
)
write_json(
selected_data_2017 %>%
filter(
category %in% categories_export_interactive,
group == "Männer" | group == "Frauen",
str_detect(subgroup, "jährig$")
) %>%
select(group, subgroup, category, year, key, value) %>%
mutate(value = value / 100),
"output/health_survey_2017.json"
)
Der Code in diesem RMarkdown wird mit lintr automatisch auf den Wickham’schen tidyverse style guide überprüft.
lintr::lint("main.Rmd")