Number of brides and grooms by their age from 1988 to 1998. Data has been downloaded from stat.si. Data on divorces comes from here.
knitr::opts_chunk$set(echo = TRUE)
library(tidyr)
library(ggplot2)
plotMarriage <- function(x, yaxis.name) {
ggplot(x, aes(x = year, y = age_group)) +
theme_bw() +
theme(legend.position = "top",
axis.text.x = element_text(angle = 90, vjust = 0.5),
legend.text = element_text(angle = 90, vjust = 0.5, hjust = 0.33)) +
scale_fill_continuous(name = yaxis.name,
breaks = seq(from = 1000, to = 6000, by = 1000)) +
xlab("Year") + ylab("Age group") +
geom_tile(aes(fill = total)) +
geom_text(aes(label = total), color = "white", size = 1.8)
}
plotDivorce <- function(div, gender) {
ggplot(div, aes(x = age_group, y = divorce_after, fill = count)) +
theme_bw() +
xlab(sprintf("Age group of %s upon divorce", gender)) +
ylab("Number of years of marriage") +
geom_tile() +
geom_text(aes(label = count), color = "white")
}
nevesta <- read.table("./data/nevesta_poroka.csv", header = TRUE, sep = "\t",
check.names = FALSE)
colnames(nevesta) <- gsub(" Nevesta", "", colnames(nevesta))
colnames(nevesta)[1] <- "age_group"
nevesta$age_group <- gsub(" let", replacement = "", x = nevesta$age_group)
nevesta$age_group <- gsub("^Pod ", replacement = "", x = nevesta$age_group)
nevesta <- pivot_longer(nevesta, -age_group, names_to = "year", values_to = "total")
nevesta$age_group <- factor(nevesta$age_group,
levels = c("15", "15-19", "20-24", "25-29", "30-34",
"35-39", "40-44", "45-49", "50-54",
"55-59", "60-64", ">= 65"))
zenin <- read.table("./data/zenin_poroka.csv", header = TRUE, sep = "\t",
check.names = FALSE)
colnames(zenin) <- gsub(" ženin", replacement = "", x = colnames(zenin))
colnames(zenin)[1] <- "age_group"
zenin$age_group <- gsub(" let", replacement = "", x = zenin$age_group)
zenin$age_group <- gsub("^Pod ", replacement = "", x = zenin$age_group)
zenin <- pivot_longer(zenin, -age_group, names_to = "year", values_to = "total")
zenin$age_group <- factor(zenin$age_group,
levels = c("15", "15-19", "20-24", "25-29", "30-34",
"35-39", "40-44", "45-49", "50-54",
"55-59", "60-64", ">= 65"))
div.agegroups <- c("0-4", "5-9", "10-14", "15-19", "20-24", ">= 25")
div.m <- read.table("./data/razveze_moski_po_starosti_cas_trajanja.csv",
header = TRUE, sep = "\t", check.names = FALSE)
div.m$`0-4` <- rowSums(div.m[, c("< 1", "1", "2", "3", "4")])
div.m <- div.m[, c("year", "age_group", "0-4", "5-9",
"10-14", "15-19", "20-24", ">= 25")]
div.m$age_group <- factor(div.m$age_group,
levels = c("Pod 25 let", "25-29 let", "30-34 let",
"35-39 let", "40-44 let", "45-49 let",
"50-54 let", "55-59 let", "60 + let"),
labels = c("< 25", "25-29", "30-34", "35-39", "40-44",
"45-49", "50-54", "55-59", ">= 60"))
div.m <- pivot_longer(div.m, c(-year, -age_group), names_to = "divorce_after",
values_to = "count")
div.m$divorce_after <- factor(div.m$divorce_after, levels = div.agegroups)
div.f <- read.table("./data/razveze_zenske_po_starosti_cas_trajanja.csv",
header = TRUE, sep = "\t", check.names = FALSE)
div.f$`0-4` <- rowSums(div.f[, c("< 1", "1", "2", "3", "4")])
div.f <- div.f[, c("year", "age_group", "0-4", "5-9",
"10-14", "15-19", "20-24", ">= 25")]
div.f$age_group <- factor(div.f$age_group,
levels = c("Pod 25 let", "25-29 let", "30-34 let",
"35-39 let", "40-44 let", "45-49 let",
"50-54 let", "55-59 let", "60 + let"),
labels = c("< 25", "25-29", "30-34", "35-39", "40-44",
"45-49", "50-54", "55-59", ">= 60"))
div.f <- pivot_longer(div.f, c(-year, -age_group), names_to = "divorce_after",
values_to = "count")
div.f$divorce_after <- factor(div.f$divorce_after, levels = div.agegroups)
plotMarriage(nevesta, yaxis = "Number of brides")
plotMarriage(zenin, yaxis.name = "Number of grooms")
ggplot(div.m, aes(x = age_group, y = divorce_after, fill = count)) +
theme_bw() +
theme(axis.text.x = element_text(angle = 90, vjust = 0.5)) +
xlab("Agre group of men upon divorce") +
ylab("Number of years of marriage") +
geom_tile() +
geom_text(aes(label = count), color = "white", size = 1.5) +
facet_wrap(~ year)
Above image summarized for all years.
div.m.sum <- aggregate(count ~ age_group + divorce_after, data = div.m, FUN = sum)
plotDivorce(div.m.sum, gender = "men")
div.f.sum <- aggregate(count ~ age_group + divorce_after, data = div.f, FUN = sum)
plotDivorce(div.f.sum, gender = "women")