Skip to content

Instantly share code, notes, and snippets.

@ryanburge
Created February 16, 2024 15:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ryanburge/ccc0d355069ca59742785282e2b5a424 to your computer and use it in GitHub Desktop.
Save ryanburge/ccc0d355069ca59742785282e2b5a424 to your computer and use it in GitHub Desktop.
aaa1 <- gss %>%
filter(year == 1989 | year == 1990 | year == 1991 | year == 1993) %>%
group_by(age) %>%
mutate(never = case_when(sexfreq == 2 | sexfreq == 3 | sexfreq == 4 | sexfreq == 5 | sexfreq == 6 ~ 1,
sexfreq == 0 | sexfreq == 1 ~ 0)) %>%
group_by(age) %>%
mean_ci(never, wt = wtssall, ci = .84) %>%
na.omit() %>%
mutate(year = "1989 to 1993")
one <- gss %>%
filter(year == 2016 | year == 2018) %>%
select(age, sexfreq, weight = wtssall)
two <- gss %>%
filter(year == 2021 | year == 2022) %>%
select(age, sexfreq, weight = wtssnrps)
both <- bind_rows(one, two)
aaa2 <- both %>%
mutate(never = case_when(sexfreq == 2 | sexfreq == 3 | sexfreq == 4 | sexfreq == 5 | sexfreq == 6 ~ 1,
sexfreq == 0 | sexfreq == 1 ~ 0)) %>%
group_by(age) %>%
mean_ci(never, wt = weight, ci = .84) %>%
na.omit() %>%
mutate(year = "2016 to 2022")
graph <- bind_rows(aaa1, aaa2)
graph %>%
filter(age <= 65) %>%
ggplot(., aes(x = age, y = mean, color = year, group = year)) +
geom_point(stroke = .5, shape = 21, alpha = .5) +
geom_labelsmooth(aes(label = year), method = "loess", formula = y ~ x, family = "font", linewidth = 1, text_smoothing = 30, size = 4, linewidth = 1, boxlinewidth = 0.3) +
scale_color_calc() +
theme_rb() +
y_pct() +
labs(x = "Age", y = "", title = "Share Having Sex At Least Once a Month Over the Last Year", caption = "@ryanburge\nData: General Social Survey, 1989-2022")
save("gss_age_sex_freq.png")
yyy1 <- gss %>%
gss_reltrad6(reltrad) %>%
filter(year <= 2018) %>%
group_by(year, reltrad) %>%
mutate(never = case_when(sexfreq == 2 | sexfreq == 3 | sexfreq == 4 | sexfreq == 5 | sexfreq == 6 ~ 1,
sexfreq == 0 | sexfreq == 1 ~ 0)) %>%
mean_ci(never, wt = wtssall, ci = .84) %>%
na.omit()
yyy2 <- gss %>%
gss_reltrad6(reltrad) %>%
filter(year >= 2021) %>%
group_by(year, reltrad) %>%
mutate(never = case_when(sexfreq == 2 | sexfreq == 3 | sexfreq == 4 | sexfreq == 5 | sexfreq == 6 ~ 1,
sexfreq == 0 | sexfreq == 1 ~ 0)) %>%
mean_ci(never, wt = wtssnrps, ci = .84) %>%
na.omit()
graph <- bind_rows(yyy1, yyy2)
graph %>%
mutate(lab = round(mean, 2)) %>%
filter(year == 1989 | year == 2008 | year == 2018 | year == 2021 | year == 2022) %>%
ggplot(., aes(x = factor(year), y = mean, fill = factor(year))) +
geom_col(color = "black", position = "dodge") +
error_bar() +
facet_wrap(~ reltrad) +
y_pct() +
scale_fill_manual(values = c(moma.colors("OKeeffe", 5))) +
lab_bar(top = FALSE, type = lab, pos = .065, sz = 6) +
geom_text(aes(y = .065, label = ifelse(year == 2021 | year == 2022, paste0(lab*100, '%'), "")), position = position_dodge(width = .9), size = 6, family = "font", color = "white") +
theme_rb() +
labs(x = "Year", y = "", title = "Share Having Sex At Least Once a Month Over the Last Year", caption = "@ryanburge\nData: GSS 1989-2022")
save("monthly_sex22.png")
## 74% in 1989
## 72% in 2008
## 67% in 2018
## 63% in 2021
## 65% in 2022
aaa1 <- gss %>%
filter(year == 1989 | year == 1990 | year == 1991 | year == 1993) %>%
filter(age >= 25 & age <= 50) %>%
gss_reltrad6(reltrad) %>%
group_by(reltrad) %>%
mutate(never = case_when(sexfreq == 2 | sexfreq == 3 | sexfreq == 4 | sexfreq == 5 | sexfreq == 6 ~ 1,
sexfreq == 0 | sexfreq == 1 ~ 0)) %>%
mean_ci(never, wt = wtssall, ci = .84) %>%
na.omit() %>%
mutate(year = "1989-\n1993")
one <- gss %>%
filter(year == 2016 | year == 2018) %>%
select(age, sexfreq, weight = wtssall, reltrad)
two <- gss %>%
filter(year == 2021 | year == 2022) %>%
select(age, sexfreq, weight = wtssnrps, reltrad)
both <- bind_rows(one, two)
aaa2 <- both %>%
filter(age >= 25 & age <= 50) %>%
gss_reltrad6(reltrad) %>%
group_by(reltrad) %>%
mutate(never = case_when(sexfreq == 2 | sexfreq == 3 | sexfreq == 4 | sexfreq == 5 | sexfreq == 6 ~ 1,
sexfreq == 0 | sexfreq == 1 ~ 0)) %>%
mean_ci(never, wt = weight, ci = .84) %>%
na.omit() %>%
mutate(year = "2016-\n2022")
graph <- bind_rows(aaa1, aaa2)
graph %>%
mutate(lab = round(mean, 2)) %>%
ggplot(., aes(x = year, y = mean, fill= year)) +
geom_col(color = "black") +
facet_wrap(~ reltrad) +
theme_rb() +
scale_fill_d3() +
error_bar() +
y_pct() +
lab_bar(top = FALSE, type = lab, pos = .085, sz = 7) +
geom_text(aes(y = .085, label = ifelse(year == "1989-\n1993", paste0(lab*100, '%'), "")), position = position_dodge(width = .9), size = 7, family = "font", color = "white") +
theme(plot.title = element_text(size = 13)) +
labs(x = "Years", y = "", title = "Share Having Sex At Least Once a Month Over the Last Year", subtitle = "25-50 Year Olds", caption = "@ryanburge\nData: GSS 1989-2022")
save("sex_freq_reltrad.png", wd = 5)
aaa1 <- gss %>%
filter(year == 1989 | year == 1990 | year == 1991 | year == 1993) %>%
filter(age >= 25 & age <= 50) %>%
gss_attend(attend) %>%
group_by(att) %>%
mutate(never = case_when(sexfreq == 2 | sexfreq == 3 | sexfreq == 4 | sexfreq == 5 | sexfreq == 6 ~ 1,
sexfreq == 0 | sexfreq == 1 ~ 0)) %>%
mean_ci(never, wt = wtssall, ci = .84) %>%
na.omit() %>%
mutate(year = "1989-\n1993")
one <- gss %>%
filter(year == 2016 | year == 2018) %>%
select(age, sexfreq, weight = wtssall, attend)
two <- gss %>%
filter(year == 2021 | year == 2022) %>%
select(age, sexfreq, weight = wtssnrps, attend)
both <- bind_rows(one, two)
aaa2 <- both %>%
filter(age >= 25 & age <= 50) %>%
gss_attend(attend) %>%
group_by(att) %>%
mutate(never = case_when(sexfreq == 2 | sexfreq == 3 | sexfreq == 4 | sexfreq == 5 | sexfreq == 6 ~ 1,
sexfreq == 0 | sexfreq == 1 ~ 0)) %>%
mean_ci(never, wt = weight, ci = .84) %>%
na.omit() %>%
mutate(year = "2016-\n2022")
graph <- bind_rows(aaa1, aaa2)
graph %>%
mutate(lab = round(mean, 2)) %>%
ggplot(., aes(x = year, y = mean, fill= year)) +
geom_col(color = "black") +
facet_wrap(~ att) +
theme_rb() +
scale_fill_calc() +
error_bar() +
y_pct() +
lab_bar(top = FALSE, type = lab, pos = .085, sz = 7) +
geom_text(aes(y = .085, label = ifelse(year == "1989-\n1993", paste0(lab*100, '%'), "")), position = position_dodge(width = .9), size = 7, family = "font", color = "white") +
theme(plot.title = element_text(size = 13)) +
labs(x = "Years", y = "", title = "Share Having Sex At Least Once a Month Over the Last Year", subtitle = "25-50 Year Olds", caption = "@ryanburge\nData: GSS 1989-2022")
save("sex_freq_att.png", wd = 5)
aaa1 <- gss %>%
mutate(mar = frcode(marital == 1 ~ "Married",
marital == 2 | marital == 3 | marital == 4 | marital == 5 ~ "Not Married")) %>%
filter(year == 1989 | year == 1990 | year == 1991 | year == 1993) %>%
group_by(age) %>%
mutate(never = case_when(sexfreq == 2 | sexfreq == 3 | sexfreq == 4 | sexfreq == 5 | sexfreq == 6 ~ 1,
sexfreq == 0 | sexfreq == 1 ~ 0)) %>%
group_by(age, mar) %>%
mean_ci(never, wt = wtssall, ci = .84) %>%
na.omit() %>%
mutate(year = "1989 to 1993")
one <- gss %>%
filter(year == 2016 | year == 2018) %>%
select(age, sexfreq, weight = wtssall, marital)
two <- gss %>%
filter(year == 2021 | year == 2022) %>%
select(age, sexfreq, weight = wtssnrps, marital)
both <- bind_rows(one, two)
aaa2 <- both %>%
mutate(mar = frcode(marital == 1 ~ "Married",
marital == 2 | marital == 3 | marital == 4 | marital == 5 ~ "Not Married")) %>%
mutate(never = case_when(sexfreq == 2 | sexfreq == 3 | sexfreq == 4 | sexfreq == 5 | sexfreq == 6 ~ 1,
sexfreq == 0 | sexfreq == 1 ~ 0)) %>%
group_by(age, mar) %>%
mean_ci(never, wt = weight, ci = .84) %>%
na.omit() %>%
mutate(year = "2016 to 2022")
graph <- bind_rows(aaa1, aaa2)
graph %>%
filter(age <= 65) %>%
ggplot(., aes(x = age, y = mean, color = year, group = year)) +
geom_point(stroke = .5, shape = 21, alpha = .5) +
geom_smooth(se = FALSE) +
scale_color_calc() +
facet_wrap(~ mar) +
theme_rb(legend = TRUE) +
y_pct() +
theme(strip.text = element_text(size = 20)) +
labs(x = "Age", y = "", title = "Share Having Sex At Least Once a Month Over the Last Year", caption = "@ryanburge\nData: General Social Survey, 1989-2022")
save("gss_age_sex_freq_marital.png")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment