Interactive visualization overview

The purpose of this interactive visualization is to examine data from the World Values Survey (WVS) and European Values Study (EVS) in the context of evolving trends in public opinion regarding moral attitudes within Ukraine.

Measures

The Integrated Values Surveys (IVS) and WVS Wave 7 datasets contained 32 questions related to specific actions or behaviors that were to be assessed as either always justifiable, never justifiable, or somewhere in between. Below, you’ll find the variable labels and the Ukrainian question wordings for both the IVS and WVS datasets:

  • Avoiding a fare on public transport (Проїзд без сплати у громадському транспорті).

  • Claiming government benefits to which you are not entitled (Отримання державної допомоги, на яку Ви не маєте права).

  • Cheating on taxes (Невиплата податків, якщо є така можливість).

  • Paying cash (Розрахунки готівкою за послуги для того, щоб уникнути сплати податків).

  • Stealing property (Крадіжка чужого майна).

  • Someone accepting a bribe (Отримання хабара посадовими особами).

  • Buy stolen goods (Купівля завідомо краденого).

  • Joyriding (Викрадення особистого транспорту на короткий проміжок часу (джойрайдінг)).

  • Taking soft drugs (Вживання марихуани (коноплі) чи гашишу).

  • Driving under influence of alcohol (Керування автомобілем у нетверезому стані).

  • Throwing away litter (Викидання сміття у громадському місці).

  • Lying (Брехня у особистих інтересах).

  • Political violence (Використання насильства у політичній боротьбі).

  • Political assassination (Політичні вбивства).

  • Terrorism as a political, ideological or religious mean (Тероризм як політичний, ідеологічний та релігійний засіб).

  • Violence against other people (Насильство проти інших людей).

  • For a man to beat his wife (Якщо батьки б’ють дітей).

  • Parents beating children (Якщо чоловік б’є свою дружини).

  • Invitro fertilization (Штучне запліднення чи запліднення у пробірці).

  • Experiments with human embryos (Наукові експерименти на людських ембріонах).

  • Genetic manipulation of food stuffs (Генна модифікація продуктів харчування).

  • Having casual sex (Випадкові сексуальні стосунки).

  • Sex before marriage (Сексуальні відносини до шлюбу).

  • Divorce (Розлучення).

  • Adultery (Зрада у шлюбі).

  • Abortion (Аборт).

  • Homosexuality (Гомосексуалізм).

  • Sex under the legal age of consent (Сексуальні стосунки до досягнення повнолітнього віку).

  • Prostitution (Проституція).

  • Euthanasia (Евтаназія (омертвлення невиліковного хворого з його дозволу)).

  • Suicide (Самогубство).

  • Death penalty (Смертна кара).

The question scale ranged from 1 (never justifiable) to 10 (always justifiable).

Data

The IVS dataset 1981-2022 (version 3.0; December 14, 2022) has been compiled by merging by merging the EVS Trend File for the years 1981-2017 (DOI: 10.4232/1.14021) and the WVS trend dataset for the years 1981-2022 (DOI: 10.14281/18241.23) 1, 2. Respondents’ answers to a specific question were extracted from WVS Wave 7 (DOI: 10.14281/18241.20) 3.
The data observations are specific to Ukraine. The research was conducted in Ukraine during the following years: 1996 (WVS, n=2811), 1999 (EVS, n=1195), 2006 (WVS, n=1000), 2008 (EVS, n=1507), 2011 (WVS, n=1500), and 2020 (EVS, n=1612; WVS, n=1289).
Individuals in the sample were 18 years of age or older.
The text in this visualization includes tables displaying the sample sizes used for calculating the means.
Changes in certain moral attitudes were examined across five generational cohorts: Builders (born before 1946), Baby Boomers (born between 1946-1964), Generation X (born between 1965-1979), Generation Y (born between 1980-1994), and Generation Z (born between 1995-2009).
Results are weighted, except for total sample sizes by year and intervals by age in generational cohorts (in the annex).

Data import and preprocessing

rm(list = ls())

library(haven)
library(dplyr)
library(tidyr)
library(srvyr)
library (plotly)
library(knitr)
library(lubridate)
### Import data set
setwd("E:/Data/")
df <- read_sav("Integrated_values_surveys_1981-2022_Ukraine.sav", encoding = "latin1")

att1 <- read_sav("WVS_Wave_7_Ukraine_Spss_v5.0.sav")


# Select specific variables and create a new data frame
# Convert a variable to a factor and assign it to a new variable


att <- df %>%
  select(E290,
         F114:F144,
         F144_01,
         F144_02,
         F199,
         S020,
         S017,
         X003) %>%
  mutate(birthyear = S020 - X003,
         Generation = case_when(
           birthyear <= 1945 ~ 1,
           between(birthyear, 1946, 1964) ~ 2,
           between(birthyear, 1965, 1979) ~ 3,
           between(birthyear, 1980, 1994) ~ 4,
           between(birthyear, 1995, 2009) ~ 5,
           between(birthyear, 2010, 2024) ~ 6,
           TRUE ~ NA
         )
  )%>%
  mutate(Generation = factor(
    Generation,
    levels = 1:6,
    labels = c(
      "Builders",
      "Baby Boomers",
      "Generation X",
      "Generation Y",
      "Generation Z",
      "Generation Alpha"
    ),
    ordered = TRUE
  )) %>%
  mutate(Year = as.factor(S020),
         Weight = S017) %>%
  select(-S020, -S017, -X003) %>%
  filter(Year %in% c("1996",    "1999", "2006",
                     "2008",    "2011", "2020"))%>%
  select_if(~!all(is.na(.))) 
  

# library(labelled)
# latt <- as.data.frame(var_label(att[1:32]))
# latt1 <- as.data.frame(var_label(att1$Q192))

opts <- options(knitr.kable.NA = "")

Section 1. Justifiable aspects of of personal financial practices relating to government systems and public services

### F115 Justifiable: Avoiding a fare on public transport
F115 <- att %>% select (F115, Weight, Year) %>% na.omit() %>%
  as_survey(weights = Weight) %>%
  group_by(Year) %>%
  summarize(n = round(survey_total()),
            Mean = round(survey_mean(F115, vartype = "ci"), 1)) %>%
  as.data.frame() %>%
  select(-n_se)


head(t(F115)) %>%
  kable(caption = "Table 1. Justifiable: Avoiding a fare on public transport")
Table 1. Justifiable: Avoiding a fare on public transport
Year 1996 1999 2006 2008 2011 2020
n 2580 1147 951 1461 1500 2849
Mean 4.4 4.0 3.8 3.2 3.5 3.8
Mean_low 4.2 3.8 3.6 3.1 3.4 3.6
Mean_upp 4.5 4.2 4.1 3.4 3.6 4.0

A

### F115 Justifiable: Avoiding a fare on public transport by generational cohort 
F115g <- att %>%
 select(F115, Weight, Year, Generation) %>%
 na.omit() %>%
 as_survey(weights = Weight) %>%
 group_by(Year, Generation) %>%
 summarize(n = round(survey_total()),
      Mean = round(survey_mean(F115, vartype = "ci"), 1)) %>%
 as.data.frame() %>%
 select(-n_se)


head(t(F115g)) %>%
  kable(caption = "Table 2a. Justifiable: Avoiding a fare on public transport by generational cohort")
Table 2a. Justifiable: Avoiding a fare on public transport by generational cohort
Year 1996 1996 1996 1999 1999 1999 1999 2006 2006 2006 2006 2008 2008 2008 2008 2011 2011 2011 2011 2020 2020 2020 2020 2020
Generation Builders Baby Boomers Generation X Builders Baby Boomers Generation X Generation Y Builders Baby Boomers Generation X Generation Y Builders Baby Boomers Generation X Generation Y Builders Baby Boomers Generation X Generation Y Builders Baby Boomers Generation X Generation Y Generation Z
n 971 1054 555 364 437 303 43 221 320 251 159 313 455 373 319 263 475 351 411 207 807 742 810 283
Mean 4.2 4.3 4.7 3.2 3.9 4.9 5.6 3.9 3.5 3.8 4.4 2.6 3.0 3.5 3.7 3.2 3.4 3.4 3.9 3.8 3.7 3.7 3.9 4.0
Mean_low 4.0 4.1 4.5 2.9 3.6 4.5 4.8 3.3 3.2 3.5 3.9 2.4 2.8 3.3 3.4 2.9 3.2 3.1 3.7 3.0 3.3 3.2 3.5 3.3
Mean_upp 4.4 4.5 4.9 3.5 4.1 5.2 6.3 4.6 3.9 4.1 4.8 2.8 3.2 3.8 4.1 3.5 3.6 3.7 4.2 4.5 4.1 4.1 4.3 4.6

B

F115gs<-F115g[c(1:2, 4)]

F115w <- F115gs %>% pivot_wider(names_from = Generation,
                values_from = Mean) %>%
 as.data.frame()

F115w <- F115w %>%
 mutate(Total = F115$Mean)

head(t(F115w)) %>%
  kable(caption = "Table 2b. Justifiable: Avoiding a fare on public transport by generational cohort (for Figure 2)")
Table 2b. Justifiable: Avoiding a fare on public transport by generational cohort (for Figure 2)
Year 1996 1999 2006 2008 2011 2020
Builders 4.2 3.2 3.9 2.6 3.2 3.8
Baby Boomers 4.3 3.9 3.5 3.0 3.4 3.7
Generation X 4.7 4.9 3.8 3.5 3.4 3.7
Generation Y 5.6 4.4 3.7 3.9 3.9
Generation Z 4

### F114 Justifiable: Claiming government benefits
F114 <- att %>% select (F114, Weight, Year) %>% na.omit() %>%
 as_survey(weights = Weight) %>%
 group_by(Year) %>%
 summarize(n = round(survey_total()),
      Mean = round(survey_mean(F114, vartype = "ci"), 1)) %>%
 as.data.frame() %>%
 select(-n_se)

head(t(F114)) %>%
  kable(caption = "Table 3. Justifiable: Claiming government benefits")
Table 3. Justifiable: Claiming government benefits
Year 1999 2008
n 1123 1415
Mean 2.8 2.2
Mean_low 2.7 2.1
Mean_upp 3.0 2.3

A

### F114 Justifiable: Claiming government benefits by generational cohort
F114g <- att %>%
 select(F114, Weight, Year, Generation) %>%
 na.omit() %>%
 as_survey(weights = Weight) %>%
 group_by(Year, Generation) %>%
 summarize(n = round(survey_total()),
      Mean = round(survey_mean(F114, vartype = "ci"), 1)) %>%
 as.data.frame() %>%
 select(-n_se)

head(t(F114g)) %>%
  kable(caption = "Table 4a. Claiming government benefits by generational cohort")
Table 4a. Claiming government benefits by generational cohort
Year 1999 1999 1999 1999 2008 2008 2008 2008
Generation Builders Baby Boomers Generation X Generation Y Builders Baby Boomers Generation X Generation Y
n 366 433 283 41 308 441 360 306
Mean 2.2 2.8 3.5 3.4 1.7 2.0 2.4 2.6
Mean_low 2.0 2.6 3.2 2.6 1.5 1.8 2.2 2.3
Mean_upp 2.4 3.1 3.8 4.2 1.9 2.1 2.7 2.9

B

F114gs <- F114g[c(1:2, 4)]

F114gsw <- F114gs %>% pivot_wider(names_from = Generation,
                 values_from = Mean) %>%
 as.data.frame()


head(t(F114g)) %>%
  kable(caption = "Table 4b. Claiming government benefits by generational cohort")
Table 4b. Claiming government benefits by generational cohort
Year 1999 1999 1999 1999 2008 2008 2008 2008
Generation Builders Baby Boomers Generation X Generation Y Builders Baby Boomers Generation X Generation Y
n 366 433 283 41 308 441 360 306
Mean 2.2 2.8 3.5 3.4 1.7 2.0 2.4 2.6
Mean_low 2.0 2.6 3.2 2.6 1.5 1.8 2.2 2.3
Mean_upp 2.4 3.1 3.8 4.2 1.9 2.1 2.7 2.9

# F114A Justifiable: Claiming government benefits to which you are not entitled 

F114A <- att %>% select (F114A, Weight, Year) %>% na.omit() %>%
 as_survey(weights = Weight) %>%
 group_by(Year) %>%
 summarize(n = round(survey_total()),
      Mean = round(survey_mean(F114A, vartype = "ci"), 1)) %>%
 as.data.frame() %>%
 select(-n_se)

head(t(F114A)) %>%
  kable(caption = "Table 5. Justifiable: Claiming government benefits to which you are not entitled")
Table 5. Justifiable: Claiming government benefits to which you are not entitled
Year 1996 2006 2011 2020
n 2343 919 1500 2758
Mean 3.2 3.4 2.7 3.2
Mean_low 3.1 3.2 2.6 3.0
Mean_upp 3.3 3.6 2.8 3.4

A

# F114A Justifiable: Claiming government benefits to which you are not entitled by generational cohort

F114Ag <- att %>%
 select(F114A, Weight, Year, Generation) %>%
 na.omit() %>%
 as_survey(weights = Weight) %>%
 group_by(Year, Generation) %>%
 summarize(n = round(survey_total()),
      Mean = round(survey_mean(F114A, vartype = "ci"), 1)) %>%
 as.data.frame() %>%
 select(-n_se)



kable(caption = "Table 6a. Justifiable: Claiming government benefits to which you are not entitled by generational cohort ", t(F114Ag))
Table 6a. Justifiable: Claiming government benefits to which you are not entitled by generational cohort
Year 1996 1996 1996 2006 2006 2006 2006 2011 2011 2011 2011 2020 2020 2020 2020 2020
Generation Builders Baby Boomers Generation X Builders Baby Boomers Generation X Generation Y Builders Baby Boomers Generation X Generation Y Builders Baby Boomers Generation X Generation Y Generation Z
n 866 973 504 210 307 245 157 263 475 351 411 203 788 700 785 282
Mean 3.1 3.2 3.4 2.8 3.3 3.4 4.3 2.5 2.5 2.7 3.1 2.5 3.1 3.1 3.2 3.7
Mean_low 2.9 3.0 3.1 2.2 2.9 3.1 3.8 2.2 2.3 2.5 2.9 1.9 2.7 2.8 2.9 3.1
Mean_upp 3.3 3.4 3.6 3.3 3.7 3.7 4.7 2.8 2.6 3.0 3.4 3.1 3.6 3.4 3.6 4.2

B

F114Ags <- F114Ag[c(1:2, 4)]

F114Agsw <- F114Ags %>% pivot_wider(names_from = Generation,
                  values_from = Mean) %>%
 as.data.frame()

F114gsw <- F114gsw %>%
 mutate(`Generation Z` = NA)

#### Conbined F114 and F114A

combined_df <- rbind(F114gsw, F114Agsw) %>%
 arrange(Year)

kable(caption = "Table 6b. Justifiable: Claiming government benefits to which you are not entitled by generational cohort (for Figure 3) ", t(combined_df))
Table 6b. Justifiable: Claiming government benefits to which you are not entitled by generational cohort (for Figure 3)
Year 1996 1999 2006 2008 2011 2020
Builders 3.1 2.2 2.8 1.7 2.5 2.5
Baby Boomers 3.2 2.8 3.3 2.0 2.5 3.1
Generation X 3.4 3.5 3.4 2.4 2.7 3.1
Generation Y 3.4 4.3 2.6 3.1 3.2
Generation Z 3.7

# F116 Justifiable: Cheating on taxes 
F116 <- att %>% select (F116, Weight, Year) %>% na.omit() %>%
 as_survey(weights = Weight) %>%
 group_by(Year) %>%
 summarize(n = round(survey_total()),
      Mean = round(survey_mean(F116, vartype = "ci"), 1)) %>%
 as.data.frame() %>%
 select(-n_se) 

kable(caption = "Table 7. Justifiable: Cheating on taxes ", t(F116))
Table 7. Justifiable: Cheating on taxes
Year 1996 1999 2006 2008 2011 2020
n 2498 1119 931 1418 1500 2761
Mean 3.5 3.4 3.1 2.4 2.6 3.0
Mean_low 3.3 3.3 3.0 2.3 2.5 2.8
Mean_upp 3.6 3.6 3.3 2.6 2.7 3.2

A

# F116 Justifiable: Cheating on taxes by generational cohort

F116g <- att %>%
 select(F116, Weight, Year, Generation) %>%
 na.omit() %>%
 as_survey(weights = Weight) %>%
 group_by(Year, Generation) %>%
 summarize(n = round(survey_total()),
      Mean = round(survey_mean(F116, vartype = "ci"), 1)) %>%
 as.data.frame() %>%
 select(-n_se)

kable(caption = "Table 8a. Justifiable: Cheating on taxes by generational cohort ", t(F116g))
Table 8a. Justifiable: Cheating on taxes by generational cohort
Year 1996 1996 1996 1999 1999 1999 1999 2006 2006 2006 2006 2008 2008 2008 2008 2011 2011 2011 2011 2020 2020 2020 2020 2020
Generation Builders Baby Boomers Generation X Builders Baby Boomers Generation X Generation Y Builders Baby Boomers Generation X Generation Y Builders Baby Boomers Generation X Generation Y Builders Baby Boomers Generation X Generation Y Builders Baby Boomers Generation X Generation Y Generation Z
n 926 1045 527 348 435 294 42 217 312 246 156 304 442 366 306 263 475 351 411 193 774 728 787 279
Mean 3.0 3.5 4.0 2.4 3.6 4.3 4.3 2.3 3.0 3.5 4.0 1.6 2.2 3.0 2.9 2.2 2.3 2.6 3.2 2.2 2.9 3.2 3.2 3.1
Mean_low 2.8 3.4 3.8 2.2 3.4 4.0 3.4 2.0 2.7 3.2 3.6 1.5 2.0 2.7 2.6 2.0 2.1 2.3 3.0 1.7 2.5 2.8 2.8 2.8
Mean_upp 3.2 3.7 4.3 2.6 3.9 4.7 5.2 2.6 3.3 3.7 4.4 1.8 2.4 3.3 3.2 2.4 2.4 2.8 3.5 2.6 3.2 3.7 3.5 3.5

B

F116gs <- F116g[c(1:2, 4)]

F116gsw <- F116gs %>% pivot_wider(names_from = Generation,
                 values_from = Mean) %>%
 as.data.frame()

kable(caption = "Table 8b. Justifiable: Cheating on taxes by generational cohort (for Figure 4) ", t(F116gsw)) 
Table 8b. Justifiable: Cheating on taxes by generational cohort (for Figure 4)
Year 1996 1999 2006 2008 2011 2020
Builders 3.0 2.4 2.3 1.6 2.2 2.2
Baby Boomers 3.5 3.6 3.0 2.2 2.3 2.9
Generation X 4.0 4.3 3.5 3.0 2.6 3.2
Generation Y 4.3 4.0 2.9 3.2 3.2
Generation Z 3.1

# F131 Justifiable: Paying cash

F131 <- att %>% select (F131, Weight, Year) %>% na.omit() %>%
 as_survey(weights = Weight) %>%
 group_by(Year) %>%
 summarize(n = round(survey_total()),
      Mean = round(survey_mean(F131, vartype = "ci"), 1)) %>%
 as.data.frame() %>%
 select(-n_se)

kable(caption = "Table 9. Justifiable: Paying cash ", t(F131)) 
Table 9. Justifiable: Paying cash
Year 1999 2008
n 1028 1328
Mean 3.5 2.6
Mean_low 3.4 2.5
Mean_upp 3.7 2.7
merged_df1 <- full_join(F115, F114, by = "Year") %>%
  rename(Mean_F115 = Mean.x,
         Mean_F114 = Mean.y) %>%
  full_join(F114A, by = "Year") %>%
  rename(Mean_F114A = Mean) %>%
  full_join(F116, by = "Year") %>%
  rename(Mean_F116 = Mean) %>%
  full_join(F131, by = "Year") %>%
  rename(Mean_F131 = Mean) %>%
  mutate(Mean_F114_combined = coalesce(Mean_F114, Mean_F114A)) %>%
  select(Year, Mean_F115, Mean_F114_combined, Mean_F116, Mean_F131)

merged_df1t<-merged_df1%>%
  rename("Avoiding a fare on public transport" = Mean_F115,
         "Claiming government benefits to which you are not entitled" = Mean_F114_combined,
         "Cheating on taxes" = Mean_F116,
         "Paying cash" = Mean_F131)


kable(caption = "Table 10. Justifiable aspects of personal financial practices relating to government systems and public services (for Figure 1)", t(merged_df1t)) 
Table 10. Justifiable aspects of personal financial practices relating to government systems and public services (for Figure 1)
Year 1996 1999 2006 2008 2011 2020
Avoiding a fare on public transport 4.4 4.0 3.8 3.2 3.5 3.8
Claiming government benefits to which you are not entitled 3.2 2.8 3.4 2.2 2.7 3.2
Cheating on taxes 3.5 3.4 3.1 2.4 2.6 3.0
Paying cash 3.5 2.6
fig1 <- plot_ly(
 merged_df1,
 x = ~ Year ,
 y = ~ Mean_F115,
 type = 'bar',
 width = 700,
 height = 500,
 name = "Avoiding a fare on public transport",
 hovertext = ~ paste("Avoiding a fare on public transport: ",
           Mean_F115)
) %>%
 add_trace(
  y = ~ Mean_F114_combined,
  name = "Claiming government benefits to which <br> you are not entitled",
  hovertext = ~ paste(
   "Claiming government benefits to which you are not entitled: ",
   Mean_F114_combined
  )
 ) %>%
 add_trace(
  y = ~ Mean_F116,
  name = "Cheating on taxes",
  hovertext = ~ paste("Cheating on taxes: ",
            Mean_F116)
 ) %>%
 add_trace(
  y = ~ Mean_F131,
  name = "Paying cash",
  hovertext = ~ paste("Paying cash: ",
            Mean_F131)
 ) %>%
 layout(xaxis = list(title = "")) %>%
 layout(yaxis = list(title = "Mean")) %>%
 layout(legend = list(
  orientation = "h",
  xanchor = "center",
  x = 0.5
 )) %>%
 layout(
  annotations =
   list(
    x = 0.57,
    y = -0.31,
    text = "Authors' calculations based on the IVS data, weighted results.",
    showarrow = F,
    xref = 'paper',
    yref = 'paper',
    xanchor = 'right',
    yanchor = 'auto',
    xshift = 0,
    yshift = 0,
    font = list(size = 11, color = "grey")
   )
 )

fig1

Figure 1. Justifiable aspects of personal financial practices relating to government systems and public services

fig2 <- plot_ly(
 data = F115w,
 x = ~ Year,
 y = ~ `Builders`,
 name = "Builders",
 type = "scatter",
 mode = "lines",
 width = 700,
 height = 500) %>%
 add_trace(y = ~ `Baby Boomers`, name = "Baby Boomers") %>%
 add_trace(y = ~ `Generation X`, name = "Generation X") %>%
 add_trace(y = ~ `Generation Y`, name = "Generation Y") %>%
 add_markers(x = ~ Year[Year == 2020],
       y = ~ `Generation Z`,
       name = "Generation Z") %>%
 layout(xaxis = list(title = "")) %>%
 layout(yaxis = list(title = "Mean")) %>%
 layout(legend = list(
  orientation = "h",
  xanchor = "center",
  x = 0.5
 )) %>%
 layout(
  annotations =
   list(
    x = 0.57,
    y = -0.2,
    text = "Authors' calculations based on the IVS data, weighted results.",
    showarrow = F,
    xref = 'paper',
    yref = 'paper',
    xanchor = 'right',
    yanchor = 'auto',
    xshift = 0,
    yshift = 0,
    font = list(size = 11, color = "grey")
   )
 )

fig2

Figure 2. Justifiable aspect of voiding a fare on public transport by generational cohort

fig3 <- plot_ly(
 data = combined_df,
 x = ~ Year,
 y = ~ `Builders`,
 name = "Builders",
 type = "scatter",
 mode = "lines",
 width = 700,
 height = 500
) %>%
 add_trace(y = ~ `Baby Boomers`, name = "Baby Boomers") %>%
 add_trace(y = ~ `Generation X`, name = "Generation X") %>%
 add_trace(y = ~ `Generation Y`, name = "Generation Y") %>%
 add_markers(x = ~ Year[Year == 2020],
       y = ~ `Generation Z`,
       name = "Generation Z") %>%
 layout(xaxis = list(title = "")) %>%
 layout(yaxis = list(title = "Mean")) %>%
 layout(legend = list(
  orientation = "h",
  xanchor = "center",
  x = 0.5
 )) %>%
  layout(
  annotations =
   list(
    x = 0.57,
    y = -0.2,
    text = "Authors' calculations based on the IVS data, weighted results.",
    showarrow = F,
    xref = 'paper',
    yref = 'paper',
    xanchor = 'right',
    yanchor = 'auto',
    xshift = 0,
    yshift = 0,
    font = list(size = 11, color = "grey")
   )
 )

fig3

Figure 3. Justifiable aspect of claiming government benefits to which you are not entitled by generational cohort

fig4 <- plot_ly(
 data = F116gsw,
 x = ~ Year,
 y = ~ `Builders`,
 name = "Builders",
 type = "scatter",
 mode = "lines",
 width = 700,
 height = 500
) %>%
 add_trace(y = ~ `Baby Boomers`, name = "Baby Boomers") %>%
 add_trace(y = ~ `Generation X`, name = "Generation X") %>%
 add_trace(y = ~ `Generation Y`, name = "Generation Y") %>%
 add_markers(x = ~ Year[Year == 2020],
       y = ~ `Generation Z`,
       name = "Generation Z") %>%
 layout(xaxis = list(title = "")) %>%
 layout(yaxis = list(title = "Mean")) %>%
 layout(legend = list(
  orientation = "h",
  xanchor = "center",
  x = 0.5
 )) %>%
  layout(
  annotations =
   list(
    x = 0.57,
    y = -0.2,
    text = "Authors' calculations based on the IVS data, weighted results.",
    showarrow = F,
    xref = 'paper',
    yref = 'paper',
    xanchor = 'right',
    yanchor = 'auto',
    xshift = 0,
    yshift = 0,
    font = list(size = 11, color = "grey")
   )
 )

fig4

Figure 4. Justifiable aspect of cheating on taxes by generational cohort

Section 2. Justifiable aspect of offenses against property

## F117 Justifiable: Someone accepting a bribe

F117<- att %>% select (F117, Weight, Year) %>% na.omit() %>%
 as_survey(weights = Weight) %>%
 group_by(Year) %>%
 summarize(n = round(survey_total()),
      Mean= round(survey_mean(F117, vartype = "ci"), 1))%>%
 as.data.frame() %>%
 select(-n_se) 

kable(caption = "Table 11. Justifiable: Someone accepting a bribe", t(F117))
Table 11. Justifiable: Someone accepting a bribe
Year 1996 1999 2006 2008 2011 2020
n 2680 1169 944 1485 1500 2860
Mean 2.0 2.1 2.5 1.6 2.0 2.0
Mean_low 1.9 1.9 2.3 1.5 1.9 1.9
Mean_upp 2.0 2.2 2.6 1.7 2.1 2.1

A

## F117 Justifiable: Someone accepting a bribe by generational cohort

F117g <- att %>%
 select(F117, Weight, Year, Generation) %>%
 na.omit() %>%
 as_survey(weights = Weight) %>%
 group_by(Year, Generation) %>% 
 summarize(
  n = round(survey_total()),
  Mean = round(survey_mean(F117, vartype = "ci"), 1)
 ) %>%
 as.data.frame() %>%
 select(-n_se)

kable(caption = "Table 12a. Justifiable: Someone accepting a bribe by generational cohort", t(F117g))  
Table 12a. Justifiable: Someone accepting a bribe by generational cohort
Year 1996 1996 1996 1999 1999 1999 1999 2006 2006 2006 2006 2008 2008 2008 2008 2011 2011 2011 2011 2020 2020 2020 2020 2020
Generation Builders Baby Boomers Generation X Builders Baby Boomers Generation X Generation Y Builders Baby Boomers Generation X Generation Y Builders Baby Boomers Generation X Generation Y Builders Baby Boomers Generation X Generation Y Builders Baby Boomers Generation X Generation Y Generation Z
n 1021 1093 566 376 446 304 44 222 320 245 157 321 465 382 316 263 475 351 411 203 809 747 804 297
Mean 1.7 2.0 2.4 1.6 1.9 2.7 2.6 2.0 2.3 2.7 3.1 1.3 1.4 1.8 1.9 1.7 1.7 2.1 2.5 1.4 1.9 2.0 2.0 2.3
Mean_low 1.6 1.9 2.2 1.4 1.8 2.4 2.0 1.6 2.0 2.4 2.7 1.2 1.3 1.7 1.7 1.6 1.6 1.9 2.3 1.2 1.7 1.8 1.9 1.8
Mean_upp 1.8 2.1 2.6 1.7 2.1 3.0 3.2 2.4 2.5 3.0 3.4 1.5 1.5 2.0 2.1 1.9 1.8 2.3 2.7 1.6 2.1 2.3 2.2 2.8

B

F117gs<-F117g[c(1:2, 4)]

F117gsw<-F117gs %>% pivot_wider(names_from=Generation,
            values_from = Mean)%>% 
 as.data.frame()

kable(caption = "Table 12b. Justifiable: Someone accepting a bribe by generational cohort (for Figure 6)", t(F117gsw)) 
Table 12b. Justifiable: Someone accepting a bribe by generational cohort (for Figure 6)
Year 1996 1999 2006 2008 2011 2020
Builders 1.7 1.6 2.0 1.3 1.7 1.4
Baby Boomers 2.0 1.9 2.3 1.4 1.7 1.9
Generation X 2.4 2.7 2.7 1.8 2.1 2.0
Generation Y 2.6 3.1 1.9 2.5 2.0
Generation Z 2.3

## F114B Justifiable: Stealing property

F114B<- att %>% select (F114B, Weight, Year) %>% na.omit() %>%
 as_survey(weights = Weight) %>%
 group_by(Year) %>%
 summarize(n = round(survey_total()),
      Mean= round(survey_mean(F114B, vartype = "ci"), 1))%>%
 as.data.frame() %>%
 select(-n_se) 

kable(caption = "Table 13. Justifiable: Stealing property", t(F114B))
Table 13. Justifiable: Stealing property
Year 2011 2020
n 1500 1260
Mean 1.7 2.0
Mean_low 1.6 1.9
Mean_upp 1.7 2.1
## F139 Justifiable: Buy stolen goods

F139<- att %>% select (F139, Weight, Year) %>% na.omit() %>%
 as_survey(weights = Weight) %>%
 group_by(Year) %>%
 summarize(n = round(survey_total()),
      Mean= round(survey_mean(F139, vartype = "ci"), 1))%>%
 as.data.frame() %>%
 select(-n_se) 

kable(caption = "Table 14. Justifiable: Buy stolen goods", t(F139))  
Table 14. Justifiable: Buy stolen goods
Year 1996
n 2679
Mean 1.8
Mean_low 1.8
Mean_upp 1.9
## F125 Justifiable: Joyriding

F125<- att %>% select (F125, Weight, Year) %>% na.omit() %>%
 as_survey(weights = Weight) %>%
 group_by(Year) %>%
 summarize(n = round(survey_total()),
      Mean= round(survey_mean(F125, vartype = "ci"), 1))%>%
 as.data.frame() %>%
 select(-n_se) 

kable(caption = "Table 15. Justifiable: Joyriding", t(F125)) 
Table 15. Justifiable: Joyriding
Year 1999 2008
n 1192 1465
Mean 1.4 1.3
Mean_low 1.3 1.3
Mean_upp 1.5 1.4
merged_df2 <- full_join(F117, F114B,by = "Year") %>%
 rename(Mean_F117 = Mean.x,
     Mean_F114B = Mean.y
 ) %>%
 full_join(F139, by = "Year") %>%
 rename(Mean_F139 = Mean
 ) %>%
 full_join(F125, by = "Year") %>%
 rename(Mean_F125 = Mean
 ) %>%
 select(Year, Mean_F117, Mean_F139, Mean_F114B, Mean_F125)


merged_df2t<-merged_df2%>%
  rename("Someone accepting a bribe" = Mean_F117,
         "Buy stolen goods" = Mean_F139,
         "Stealing property" = Mean_F114B,
         "Joyriding" = Mean_F125)

kable(caption = "Table 16. Justifiable aspects of offenses against property (for Figure 5)", t(merged_df2t)) 
Table 16. Justifiable aspects of offenses against property (for Figure 5)
Year 1996 1999 2006 2008 2011 2020
Someone accepting a bribe 2.0 2.1 2.5 1.6 2.0 2.0
Buy stolen goods 1.8
Stealing property 1.7 2.0
Joyriding 1.4 1.3
fig5 <- plot_ly(merged_df2, 
        x = ~Year , y = ~Mean_F117,
        type = 'bar',
        width = 700,
        height = 500,
        name = "Someone accepting a bribe",
        hovertext = ~paste("Someone accepting a bribe:",
                  Mean_F117)) %>%
 add_trace(y = ~Mean_F139,
      name = "Buy stolen goods",
      hovertext = ~paste("Buy stolen goods:",
                Mean_F139)) %>%
 add_trace(y = ~Mean_F114B,
      name = "Stealing property",
      hovertext = ~paste("Stealing property:",
                Mean_F114B)) %>%
 add_trace(y = ~Mean_F125,
      name = "Joyriding",
      hovertext = ~paste("Joyriding:",
                Mean_F125))%>%
 layout(xaxis = list(title = "")) %>%
 layout(yaxis = list(title = "Mean")) %>%
 layout(legend = list(
  orientation = "h",
  xanchor = "center",
  x = 0.5
 )) %>%
  layout(
  annotations =
   list(
    x = 0.57,
    y = -0.2,
    text = "Authors' calculations based on the IVS data, weighted results.",
    showarrow = F,
    xref = 'paper',
    yref = 'paper',
    xanchor = 'right',
    yanchor = 'auto',
    xshift = 0,
    yshift = 0,
    font = list(size = 11, color = "grey")
   )
 )

fig5

Figure 5. Justifiable aspects of offenses against property

fig6 <- plot_ly(
 data = F117gsw,
 x = ~ Year,
 y = ~ `Builders`,
 name = "Builders",
 type = "scatter",
 mode = "lines",
 width = 700,
 height = 500
) %>%
 add_trace(y = ~ `Baby Boomers`, name = "Baby Boomers") %>%
 add_trace(y = ~ `Generation X`, name = "Generation X") %>%
 add_trace(y = ~ `Generation Y`, name = "Generation Y") %>%
 add_markers(x = ~ Year[Year == 2020],
       y = ~ `Generation Z`,
       name = "Generation Z") %>%
 layout(xaxis = list(title = "")) %>%
 layout(yaxis = list(title = "Mean")) %>%
 layout(legend = list(
  orientation = "h",
  xanchor = "center",
  x = 0.5
 )) %>%
  layout(
  annotations =
   list(
    x = 0.57,
    y = -0.2,
    text = "Authors' calculations based on the IVS data, weighted results.",
    showarrow = F,
    xref = 'paper',
    yref = 'paper',
    xanchor = 'right',
    yanchor = 'auto',
    xshift = 0,
    yshift = 0,
    font = list(size = 11, color = "grey")
   )
 )

fig6

Figure 6. Justifiable aspect of someone accepting a bribe by generational cohort

Section 3. Justifiable aspects of adherence to general social norms

## F129 Justifiable: Throwing away litter
F129<- att %>% select (F129, Weight, Year) %>% na.omit() %>%
 as_survey(weights = Weight) %>%
 group_by(Year) %>%
 summarize(n = round(survey_total()),
      Mean= round(survey_mean(F129, vartype = "ci"), 1))%>%
 as.data.frame() %>%
 select(-n_se) 

kable(caption = "Table 17. Justifiable: Throwing away litter", t(F129))
Table 17. Justifiable: Throwing away litter
Year 1999
n 1187
Mean 1.9
Mean_low 1.8
Mean_upp 2
## F127 Justifiable: Lying
F127<- att %>% select (F127, Weight, Year) %>% na.omit() %>%
 as_survey(weights = Weight) %>%
 group_by(Year) %>%
 summarize(n = round(survey_total()),
      Mean= round(survey_mean(F127, vartype = "ci"), 1))%>%
 as.data.frame() %>%
 select(-n_se)

kable(caption = "Table 18. Justifiable: Lying", t(F127))
Table 18. Justifiable: Lying
Year 1999 2008
n 1172 1465
Mean 3.2 2.6
Mean_low 3.0 2.5
Mean_upp 3.3 2.8
merged_df3 <- full_join(F127, F129,by = "Year") %>%
 rename(Mean_F127 = Mean.x,
     Mean_F129 = Mean.y
 ) %>%
  select(Year, Mean_F127, Mean_F129)


merged_df3t<-merged_df3%>%
  rename("Lying" = Mean_F127,
         "Throwing away litter" = Mean_F129)

kable(caption = "Table 19. Justifiable aspects of adherence to general social norms (for Figure 7)", t(merged_df3t))
Table 19. Justifiable aspects of adherence to general social norms (for Figure 7)
Year 1999 2008
Lying 3.2 2.6
Throwing away litter 1.9
fig7 <- plot_ly(merged_df3, 
        x = ~Year , y = ~Mean_F129,
        type = 'bar',
        width = 700,
        height = 500,
        name = "Throwing away litter",
        hovertext = ~paste("Throwing away litter:",
                  Mean_F129),
        marker = list(color = "gray")
       ) %>%
 add_trace(y = ~Mean_F127,
      name = "Lying",
      hovertext = ~paste("Lying:",
                Mean_F127),
      marker = list(color = "")  
     ) %>%
  layout(xaxis = list(title = "")) %>%
 layout(yaxis = list(title = "Mean")) %>%
 layout(legend = list(
  orientation = "h",
  xanchor = "center",
  x = 0.5
 )) %>%
  layout(
  annotations =
   list(
    x = 0.57,
    y = -0.2,
    text = "Authors' calculations based on the IVS data, weighted results.",
    showarrow = F,
    xref = 'paper',
    yref = 'paper',
    xanchor = 'right',
    yanchor = 'auto',
    xshift = 0,
    yshift = 0,
    font = list(size = 11, color = "grey")
   )
 )

fig7

Figure 7. Justifiable aspects of adherence to general social norms

Section 4. Justifiable aspects of risky behavior

# F126 Justifiable: Taking soft drugs

F126<- att %>% select (F126, Weight, Year) %>% na.omit() %>%
 as_survey(weights = Weight) %>%
 group_by(Year) %>%
 summarize(n = round(survey_total()),
      Mean= round(survey_mean(F126, vartype = "ci"), 1))%>%
 as.data.frame() %>%
 select(-n_se) 

kable(caption = "Table 20. Justifiable: Taking soft drugs", t(F126))
Table 20. Justifiable: Taking soft drugs
Year 1999 2008 2020
n 1182 1486 1609
Mean 1.3 1.3 2.3
Mean_low 1.3 1.2 2.0
Mean_upp 1.4 1.3 2.6
## F130 Justifiable: Driving under influence of alcohol

F130<- att %>% select (F130, Weight, Year) %>% na.omit() %>%
 as_survey(weights = Weight) %>%
 group_by(Year) %>%
 summarize(n = round(survey_total()),
      Mean= round(survey_mean(F130, vartype = "ci"), 1))%>%
 as.data.frame() %>%
 select(-n_se) 

kable(caption = "Table 21. Justifiable: Driving under influence of alcohol", t(F130))
Table 21. Justifiable: Driving under influence of alcohol
Year 1999
n 1190
Mean 1.6
Mean_low 1.5
Mean_upp 1.7
merged_df4 <- full_join(F126, F130,by = "Year") %>%
 rename(Mean_F126 = Mean.x,
     Mean_F130 = Mean.y
 ) %>%
 select(Year, Mean_F126, Mean_F130)

merged_df4t<-merged_df4%>%
  rename("Taking soft drugs" = Mean_F126,
         "Driving under influence of alcohol" = Mean_F130)

kable(caption = "Table 22. Justifiable aspects of risky behavior (for Figure 8)", t(merged_df4t))
Table 22. Justifiable aspects of risky behavior (for Figure 8)
Year 1999 2008 2020
Taking soft drugs 1.3 1.3 2.3
Driving under influence of alcohol 1.6
fig8 <- plot_ly(merged_df4, 
        x = ~Year , y = ~Mean_F130,
        type = 'bar',
        width = 700,
        height = 500,
        name = "Driving under influence of alcohol",
        hovertext = ~paste("Driving under influence of alcohol:",
                  Mean_F130)) %>%
 add_trace(y = ~Mean_F126,
      name = "Taking soft drugs",
      hovertext = ~paste("Taking soft drugs:",
                Mean_F126), marker = list(color = "green")
      ) %>%
 layout(xaxis = list(title = "")) %>%
 layout(yaxis = list(title = "Mean")) %>%
 layout(legend = list(
  orientation = "h",
  xanchor = "center",
  x = 0.5
 )) %>%
  layout(
  annotations =
   list(
    x = 0.57,
    y = -0.2,
    text = "Authors' calculations based on the IVS data, weighted results.",
    showarrow = F,
    xref = 'paper',
    yref = 'paper',
    xanchor = 'right',
    yanchor = 'auto',
    xshift = 0,
    yshift = 0,
    font = list(size = 11, color = "grey")
   )
 )

fig8

Figure 8. Justifiable aspects of risky behavior

Section 5. Justifiable aspects of politically motivated violence

## E290 Justifiable: Political violence

E290<- att %>% select (E290, Weight, Year) %>% na.omit() %>%
 as_survey(weights = Weight) %>%
 group_by(Year) %>%
 summarize(n = round(survey_total()),
      Mean= round(survey_mean(E290, vartype = "ci"), 1))%>%
 as.data.frame() %>%
 select(-n_se) 

kable(caption = "Table 23. Justifiable: Political violence", t(E290))
Table 23. Justifiable: Political violence
Year 2020
n 2778
Mean 2.2
Mean_low 2
Mean_upp 2.3
## F136 Justifiable: Political assassination

F136<- att %>% select (F136, Weight, Year) %>% na.omit() %>%
 as_survey(weights = Weight) %>%
 group_by(Year) %>%
 summarize(n = round(survey_total()),
      Mean= round(survey_mean(F136, vartype = "ci"), 1))%>%
 as.data.frame() %>%
 select(-n_se) 

kable(caption = "Table 24. Justifiable: Political assassination", t(F136))
Table 24. Justifiable: Political assassination
Year 1999
n 1160
Mean 1.4
Mean_low 1.4
Mean_upp 1.5
## Q192 Justifiable: Terrorism as a political, ideological or religious mean (in WVS_Wave_7_Ukraine_Spss_v5.0.sav)


Q192<- att1 %>% select (Q192, W_WEIGHT) %>% na.omit() %>%
 as_survey(weights = W_WEIGHT) %>%
 summarize(n = round(survey_total()),
      Mean= round(survey_mean(Q192, vartype = "ci"), 1))%>%
  mutate(Year = 2020)%>% 
 relocate(Year, .before = 1)%>%
 as.data.frame() %>%
 select(-n_se) 

kable(caption = "Table 25. Justifiable: Terrorism as a political, ideological or religious mean ", t(Q192))
Table 25. Justifiable: Terrorism as a political, ideological or religious mean
Year 2020.0
n 1240.0
Mean 1.8
Mean_low 1.7
Mean_upp 1.9
merged_df5 <- full_join(F136, E290, by = "Year") %>%
  rename(Mean_E290 = Mean.y ,
         Mean_F136 = Mean.x) %>%
  select(Year, Mean_F136, Mean_E290) %>%
  mutate(Mean_Q192 = ifelse(row_number() == 2, 1.8, NA))

merged_df5t <- merged_df5 %>%
  rename("Terrorism as a political, ideological or religious mean" = Mean_Q192,
         "Political violence" = Mean_F136,
         "Political assassination" = Mean_E290)

kable(caption = "Table 26. Justifiable aspects of politically motivated violence (for Figure 9)", t(merged_df5t))
Table 26. Justifiable aspects of politically motivated violence (for Figure 9)
Year 1999 2020
Political violence 1.4
Political assassination 2.2
Terrorism as a political, ideological or religious mean 1.8
fig9 <- plot_ly(
 merged_df5,
 x = ~ Year ,
 y = ~ Mean_Q192 ,
 type = 'bar',
 width = 700,
 height = 500,
 name = "Terrorism as a political,<br>ideological or religious mean",
 hovertext = ~ paste("Terrorism as a political, ideological or religious mean:",
           Mean_Q192)
) %>%
 add_trace(
  y = ~ Mean_F136,
  name = "Political assassination",
  hovertext = ~ paste("Political assassination:",
   Mean_F136)
 ) %>%
 add_trace(
  y = ~ Mean_E290,
  name = "Political violence",
  hovertext = ~ paste("Political violence:",
            Mean_E290)
 ) %>%
 layout(xaxis = list(title = "")) %>%
 layout(yaxis = list(title = "Mean")) %>%
 layout(legend = list(
  orientation = "h",
  xanchor = "center",
  x = 0.5
 )) %>%
  layout(
  annotations =
   list(
    x = 0.57,
    y = -0.25,
    text = "Authors' calculations based on the IVS and the WVS data, weighted results.",
    showarrow = F,
    xref = 'paper',
    yref = 'paper',
    xanchor = 'right',
    yanchor = 'auto',
    xshift = 0,
    yshift = 0,
    font = list(size = 11, color = "grey")
   )
 )

fig9

Figure 9. Justifiable aspects of politically motivated violence

Section 6. Justifiable aspects of violence

## F114D Justifiable: Violence against other people

F114D<- att %>% select (F114D, Weight, Year) %>% na.omit() %>%
 as_survey(weights = Weight) %>%
 group_by(Year) %>%
 summarize(n = round(survey_total()),
      Mean= round(survey_mean(F114D, vartype = "ci"), 1))%>%
 as.data.frame() %>%
 select(-n_se) 

kable(caption = "Table 27. Justifiable: Violence against other people", t(F114D))
Table 27. Justifiable: Violence against other people
Year 2011 2020
n 1500 1246
Mean 1.7 2.1
Mean_low 1.6 2.0
Mean_upp 1.8 2.2
# F199 Justifiable: For a man to beat his wife

F199<- att %>% select (F199, Weight, Year) %>% na.omit() %>%
 as_survey(weights = Weight) %>%
 group_by(Year) %>%
 summarize(n = round(survey_total()),
      Mean= round(survey_mean(F199, vartype = "ci"), 1))%>%
 as.data.frame() %>%
 select(-n_se) 

kable(caption = "Table 28. Justifiable: For a man to beat his wife ", t(F199))
Table 28. Justifiable: For a man to beat his wife
Year 2006 2011 2020
n 941 1500 1245
Mean 1.9 1.7 2.0
Mean_low 1.8 1.6 1.9
Mean_upp 2.0 1.8 2.1
## F114C Justifiable: Parents beating children

F114C<- att %>% select (F114C, Weight, Year) %>% na.omit() %>%
 as_survey(weights = Weight) %>%
 group_by(Year) %>%
 summarize(n = round(survey_total()),
      Mean= round(survey_mean(F114C, vartype = "ci"), 1))%>%
 as.data.frame() %>%
 select(-n_se) 

kable(caption = "Table 29. Justifiable: Parents beating children ", t(F114C))
Table 29. Justifiable: Parents beating children
Year 2011 2020
n 1500 1233
Mean 2.3 2.5
Mean_low 2.2 2.4
Mean_upp 2.4 2.6
merged_df6 <- full_join(F199, F114C, by = "Year") %>%
 rename(Mean_F199  = Mean.x,
     Mean_F114C = Mean.y
 ) %>%
 full_join(F114D, by = "Year") %>%
 rename(Mean_F114D = Mean
 ) %>%
  select(Year, Mean_F199, Mean_F114C, Mean_F114D)

merged_df6t <- merged_df6 %>%
  rename("For a man to beat his wife" = Mean_F199,
         "Parents beating children" = Mean_F114C,
         "Violence against other people" = Mean_F114D)

kable(caption = "Table 30. Justifiable aspects of violence (for Figure 10)", t(merged_df6t))
Table 30. Justifiable aspects of violence (for Figure 10)
Year 2006 2011 2020
For a man to beat his wife 1.9 1.7 2.0
Parents beating children 2.3 2.5
Violence against other people 1.7 2.1
fig10 <- plot_ly(
 merged_df6,
 x = ~ Year ,
 y = ~ Mean_F114D ,
 type = 'bar',
 width = 700,
 height = 500,
 name = "Violence against other people",
 hovertext = ~ paste("Violence against other people:",
           Mean_F114D)) %>%
 add_trace(
  y = ~ Mean_F114C,
  name = "Parents beating children",
  hovertext = ~ paste("Parents beating children:",
            Mean_F114C))%>%
 add_trace(
  y = ~ Mean_F199,
  name = "For a man to beat his wife",
  hovertext = ~ paste("For a man to beat his wife:",
            Mean_F199)
  ) %>%
 layout(xaxis = list(title = "")) %>%
 layout(yaxis = list(title = "Mean")) %>%
 layout(legend = list(
  orientation = "h",
  xanchor = "center",
  x = 0.5
 )) %>%
  layout(
  annotations =
   list(
    x = 0.57,
    y = -0.21,
    text = "Authors' calculations based on the IVS data, weighted results.",
    showarrow = F,
    xref = 'paper',
    yref = 'paper',
    xanchor = 'right',
    yanchor = 'auto',
    xshift = 0,
    yshift = 0,
    font = list(size = 11, color = "grey")
   )
 )

fig10

Figure 10. Justifiable aspects of violence

Section 7. Justifiable aspects of medical and biological issues

## F144_01 Justifiable: Invitro fertilization

F144_01<- att %>% select (F144_01, Weight, Year) %>% na.omit() %>%
 as_survey(weights = Weight) %>%
 group_by(Year) %>%
 summarize(n = round(survey_total()),
      Mean= round(survey_mean(F144_01, vartype = "ci"), 1))%>%
 as.data.frame() %>%
 select(-n_se) 

kable(caption = "Table 31. Justifiable: Invitro fertilization ", t(F144_01))
Table 31. Justifiable: Invitro fertilization
Year 2008 2020
n 1296 1496
Mean 5.8 6.4
Mean_low 5.6 6.0
Mean_upp 6.0 6.9
## F137 Justifiable: Experiments with human embryos

F137<- att %>% select (F137, Weight, Year) %>% na.omit() %>%
 as_survey(weights = Weight) %>%
 group_by(Year) %>%
 summarize(n = round(survey_total()),
      Mean= round(survey_mean(F137, vartype = "ci"), 1))%>%
 as.data.frame() %>%
 select(-n_se) 

kable(caption = "Table 32. Justifiable: Experiments with human embryos ", t(F137))
Table 32. Justifiable: Experiments with human embryos
Year 2008
n 1306
Mean 2.1
Mean_low 2
Mean_upp 2.2
## F138 Justifiable: Genetic manipulation of food stuffs

F138<- att %>% select (F138, Weight, Year) %>% na.omit() %>%
 as_survey(weights = Weight) %>%
 group_by(Year) %>%
 summarize(n = round(survey_total()),
      Mean= round(survey_mean(F138, vartype = "ci"), 1))%>%
 as.data.frame() %>%
 select(-n_se) 

kable(caption = "Table 33. Justifiable: Genetic manipulation of food stuffs ", t(F138))
Table 33. Justifiable: Genetic manipulation of food stuffs
Year 2008
n 1289
Mean 1.6
Mean_low 1.5
Mean_upp 1.6
merged_df7 <- full_join(F144_01, F137 , by = "Year") %>%
 rename(Mean_F144_01  = Mean.x,
     Mean_F137 = Mean.y
 ) %>%
 full_join(F138, by = "Year") %>%
 rename(Mean_F138 = Mean
 ) %>%
 select(Year, Mean_F144_01, Mean_F137, Mean_F138)

merged_df7t <- merged_df7 %>%
  rename("Invitro fertilization" = Mean_F144_01,
         "Experiments with human embryos" = Mean_F137,
         "Genetic manipulation of food stuffs" = Mean_F138)


kable(caption = "Table 34. Justifiable aspects of medical and biological issues (for Figure 11)", t(merged_df7t))
Table 34. Justifiable aspects of medical and biological issues (for Figure 11)
Year 2008 2020
Invitro fertilization 5.8 6.4
Experiments with human embryos 2.1
Genetic manipulation of food stuffs 1.6
fig11 <- plot_ly(
 merged_df7,
 x = ~ Year ,
 y = ~ Mean_F138,
 type = 'bar',
 width = 700,
 height = 500,
 name = "Genetic manipulation of food stuffs",
 hovertext = ~ paste("Genetic manipulation of food stuffs:",
           Mean_F138)) %>%
  add_trace(
  y = ~ Mean_F137,
  name = "Experiments with human embryos",
  hovertext = ~ paste("Experiments with human embryos:",
            Mean_F137))%>%
 add_trace(y = ~ Mean_F144_01,
 name = "Invitro fertilization",
 hovertext = ~ paste("Invitro fertilization:",
           Mean_F144_01))%>%
 layout(xaxis = list(title = "")) %>%
 layout(yaxis = list(title = "Mean")) %>%
 layout(legend = list(
  orientation = "h",
  xanchor = "center",
  x = 0.5
 )) %>%
  layout(
  annotations =
   list(
    x = 0.57,
    y = -0.24,
    text = "Authors' calculations based on the IVS data, weighted results.",
    showarrow = F,
    xref = 'paper',
    yref = 'paper',
    xanchor = 'right',
    yanchor = 'auto',
    xshift = 0,
    yshift = 0,
    font = list(size = 11, color = "grey")
   )
 )

fig11

Figure 11. Justifiable aspects of medical and biological issues

Section 8. Justifiable aspects of sexual behavior and relationships

## F121 Justifiable: Divorce

F121<- att %>% select (F121, Weight, Year) %>% na.omit() %>%
 as_survey(weights = Weight) %>%
 group_by(Year) %>%
 summarize(n = round(survey_total()),
      Mean= round(survey_mean(F121, vartype = "ci"), 1))%>%
 as.data.frame() %>%
 select(-n_se) 

kable(caption = "Table 35. Justifiable: Divorce", t(F121))
Table 35. Justifiable: Divorce
Year 1996 1999 2006 2008 2011 2020
n 2399 1124 883 1405 1500 2689
Mean 4.9 4.5 4.9 4.3 5.5 5.7
Mean_low 4.8 4.3 4.7 4.2 5.3 5.5
Mean_upp 5.0 4.6 5.1 4.5 5.6 5.9

A

## F121 Justifiable: Divorce by generational cohort

F121g <- att %>%
 select(F121, Weight, Year, Generation) %>%
 na.omit() %>%
 as_survey(weights = Weight) %>%
 group_by(Year, Generation) %>% 
 summarize(
  n = round(survey_total()),
  Mean = round(survey_mean(F121, vartype = "ci"), 1)
 ) %>%
 as.data.frame() %>%
 select(-n_se)

kable(caption = "Table 36a. Justifiable: Divorce by generational cohort ", t(F121g))
Table 36a. Justifiable: Divorce by generational cohort
Year 1996 1996 1996 1999 1999 1999 1999 2006 2006 2006 2006 2008 2008 2008 2008 2011 2011 2011 2011 2020 2020 2020 2020 2020
Generation Builders Baby Boomers Generation X Builders Baby Boomers Generation X Generation Y Builders Baby Boomers Generation X Generation Y Builders Baby Boomers Generation X Generation Y Builders Baby Boomers Generation X Generation Y Builders Baby Boomers Generation X Generation Y Generation Z
n 922 965 512 368 423 289 43 191 296 242 155 295 446 367 297 263 475 351 411 206 760 693 758 272
Mean 4.5 5.2 5.4 3.9 4.6 5.0 4.9 3.9 5.1 5.3 5.1 3.6 4.4 4.8 4.3 4.9 5.2 5.7 5.9 5.1 5.4 5.9 5.8 6.2
Mean_low 4.3 5.0 5.1 3.6 4.4 4.7 4.1 3.4 4.7 5.0 4.7 3.3 4.2 4.6 4.0 4.6 4.9 5.4 5.7 4.3 5.0 5.5 5.3 5.7
Mean_upp 4.6 5.3 5.6 4.1 4.9 5.3 5.6 4.4 5.4 5.6 5.5 3.9 4.6 5.1 4.7 5.2 5.4 6.0 6.2 5.9 5.8 6.3 6.3 6.7

B

F121gs<-F121g[c(1:2, 4)]

F121gsw<-F121gs %>% pivot_wider(names_from=Generation,
            values_from = Mean)

kable(caption = "Table 36b. Justifiable: Divorce by generational cohort (for Figure 13)", t(F121gsw))
Table 36b. Justifiable: Divorce by generational cohort (for Figure 13)
Year 1996 1999 2006 2008 2011 2020
Builders 4.5 3.9 3.9 3.6 4.9 5.1
Baby Boomers 5.2 4.6 5.1 4.4 5.2 5.4
Generation X 5.4 5.0 5.3 4.8 5.7 5.9
Generation Y 4.9 5.1 4.3 5.9 5.8
Generation Z 6.2

## F120 Justifiable: Abortion

F120<- att %>% select (F120, Weight, Year) %>% na.omit() %>%
 as_survey(weights = Weight) %>%
 group_by(Year) %>%
 summarize(n = round(survey_total()),
      Mean= round(survey_mean(F120, vartype = "ci"), 1))%>%
 as.data.frame() %>%
 select(-n_se) 

kable(caption = "Table 37. Justifiable: Abortion ", t(F120))
Table 37. Justifiable: Abortion
Year 1996 1999 2006 2008 2011 2020
n 2359 1110 881 1404 1500 2703
Mean 4.2 3.8 3.9 3.4 3.7 4.2
Mean_low 4.1 3.7 3.7 3.3 3.6 4.0
Mean_upp 4.4 4.0 4.0 3.5 3.9 4.5

A

## F120 Justifiable: Abortion by generational cohort

F120g <- att %>%
 select(F120, Weight, Year, Generation) %>%
 na.omit() %>%
 as_survey(weights = Weight) %>%
 group_by(Year, Generation) %>% 
 summarize(
  n = round(survey_total()),
  Mean = round(survey_mean(F120, vartype = "ci"), 1)
 ) %>%
 as.data.frame() %>%
 select(-n_se)

kable(caption = "Table 38a. Justifiable: Abortion by generational cohort (for Figure 14) ", t(F120g))
Table 38a. Justifiable: Abortion by generational cohort (for Figure 14)
Year 1996 1996 1996 1999 1999 1999 1999 2006 2006 2006 2006 2008 2008 2008 2008 2011 2011 2011 2011 2020 2020 2020 2020 2020
Generation Builders Baby Boomers Generation X Builders Baby Boomers Generation X Generation Y Builders Baby Boomers Generation X Generation Y Builders Baby Boomers Generation X Generation Y Builders Baby Boomers Generation X Generation Y Builders Baby Boomers Generation X Generation Y Generation Z
n 881 968 510 357 420 290 43 197 294 238 151 297 443 363 301 263 475 351 411 208 767 689 767 273
Mean 3.8 4.5 4.6 3.2 3.9 4.4 4.5 2.7 4.2 4.4 3.9 2.9 3.5 3.8 3.4 3.3 3.6 4.0 4.0 3.5 4.2 4.3 4.2 4.9
Mean_low 3.6 4.3 4.3 3.0 3.6 4.1 3.7 2.3 3.8 4.0 3.5 2.6 3.3 3.5 3.0 3.0 3.4 3.7 3.7 2.8 3.9 4.0 3.7 4.2
Mean_upp 3.9 4.7 4.8 3.5 4.1 4.7 5.3 3.1 4.5 4.7 4.3 3.1 3.7 4.1 3.7 3.6 3.8 4.3 4.2 4.2 4.6 4.7 4.6 5.6

B

F120gs<-F120g[c(1:2, 4)]

F120gsw <- F120gs %>% pivot_wider(names_from = Generation,
                 values_from = Mean) %>%
 as.data.frame()

kable(caption = "Table 38b. Justifiable: Abortion by generational cohort (for Figure 14)", t(F120gsw))
Table 38b. Justifiable: Abortion by generational cohort (for Figure 14)
Year 1996 1999 2006 2008 2011 2020
Builders 3.8 3.2 2.7 2.9 3.3 3.5
Baby Boomers 4.5 3.9 4.2 3.5 3.6 4.2
Generation X 4.6 4.4 4.4 3.8 4.0 4.3
Generation Y 4.5 3.9 3.4 4.0 4.2
Generation Z 4.9

## F118 Justifiable: Homosexuality

F118<- att %>% select (F118, Weight, Year) %>% na.omit() %>%
 as_survey(weights = Weight) %>%
 group_by(Year) %>%
 summarize(n = round(survey_total()),
      Mean= round(survey_mean(F118, vartype = "ci"), 1))%>%
 as.data.frame() %>%
 select(-n_se) 

kable(caption = "Table 39. Justifiable: Homosexuality (for Figure 15)", t(F118)) 
Table 39. Justifiable: Homosexuality (for Figure 15)
Year 1996 1999 2006 2008 2011 2020
n 2402 1103 866 1347 1500 2591
Mean 2.0 2.3 2.5 1.6 2.5 2.6
Mean_low 1.9 2.2 2.4 1.5 2.4 2.4
Mean_upp 2.1 2.5 2.7 1.7 2.6 2.7

A

## F118 Justifiable: Homosexuality by generational cohort

F118g <- att %>%
 select(F118, Weight, Year, Generation) %>%
 na.omit() %>%
 as_survey(weights = Weight) %>%
 group_by(Year, Generation) %>% 
 summarize(
  n = round(survey_total()),
  Mean = round(survey_mean(F118, vartype = "ci"), 1)
 ) %>%
 as.data.frame() %>%
 select(-n_se)

kable(caption = "Table 40a. Justifiable: Homosexuality by generational cohort", t(F118g))
Table 40a. Justifiable: Homosexuality by generational cohort
Year 1996 1996 1996 1999 1999 1999 1999 2006 2006 2006 2006 2008 2008 2008 2008 2011 2011 2011 2011 2020 2020 2020 2020 2020
Generation Builders Baby Boomers Generation X Builders Baby Boomers Generation X Generation Y Builders Baby Boomers Generation X Generation Y Builders Baby Boomers Generation X Generation Y Builders Baby Boomers Generation X Generation Y Builders Baby Boomers Generation X Generation Y Generation Z
n 906 970 526 344 421 297 42 187 296 233 150 284 426 345 292 263 475 351 411 194 720 680 728 268
Mean 1.6 2.0 2.7 1.7 2.2 3.1 3.6 1.7 2.5 2.8 3.0 1.2 1.5 1.8 1.9 2.0 2.2 2.6 3.0 2.0 2.4 2.5 2.6 3.4
Mean_low 1.5 1.9 2.5 1.5 2.0 2.8 2.6 1.5 2.3 2.5 2.6 1.1 1.4 1.6 1.6 1.8 2.0 2.4 2.8 1.5 2.1 2.2 2.3 2.9
Mean_upp 1.7 2.2 2.9 1.9 2.4 3.5 4.7 2.0 2.8 3.1 3.3 1.3 1.6 2.0 2.1 2.2 2.4 2.9 3.3 2.5 2.8 2.9 2.9 3.9

B

F118gs<-F118g[c(1:2, 4)]

F118gsw <- F118gs %>% pivot_wider(names_from = Generation,
                 values_from = Mean) %>%
 as.data.frame()

kable(caption = "Table 40b. Justifiable: Homosexuality by generational cohort (for Figure 15)", t(F118gsw)) 
Table 40b. Justifiable: Homosexuality by generational cohort (for Figure 15)
Year 1996 1999 2006 2008 2011 2020
Builders 1.6 1.7 1.7 1.2 2.0 2.0
Baby Boomers 2.0 2.2 2.5 1.5 2.2 2.4
Generation X 2.7 3.1 2.8 1.8 2.6 2.5
Generation Y 3.6 3.0 1.9 3.0 2.6
Generation Z 3.4

## F132 Justifiable: Having casual sex

F132<- att %>% select (F132, Weight, Year) %>% na.omit() %>%
 as_survey(weights = Weight) %>%
 group_by(Year) %>%
 summarize(n = round(survey_total()),
      Mean= round(survey_mean(F132, vartype = "ci"), 1))%>%
 as.data.frame() %>%
 select(-n_se) 

kable(caption = "Table 41. Justifiable: Having casual sex", t(F132)) 
Table 41. Justifiable: Having casual sex
Year 1999 2008 2020
n 1122 1398 2614
Mean 2.8 2.5 3.8
Mean_low 2.6 2.4 3.6
Mean_upp 2.9 2.6 4.0
## F135A Justifiable: Sex before marriage

F135A<- att %>% select (F135A, Weight, Year) %>% na.omit() %>%
 as_survey(weights = Weight) %>%
 group_by(Year) %>%
 summarize(n = round(survey_total()),
      Mean= round(survey_mean(F135A, vartype = "ci"), 1))%>%
 as.data.frame() %>%
 select(-n_se) 

kable(caption = "Table 42. Justifiable: Sex before marriage ", t(F135A))
Table 42. Justifiable: Sex before marriage
Year 2011 2020
n 1500 1073
Mean 5.7 5.9
Mean_low 5.5 5.8
Mean_upp 5.8 6.1
## F128 Justifiable: Adultery

F128<- att %>% select (F128, Weight, Year) %>% na.omit() %>%
 as_survey(weights = Weight) %>%
 group_by(Year) %>%
 summarize(n = round(survey_total()),
      Mean= round(survey_mean(F128, vartype = "ci"), 1))%>%
 as.data.frame() %>%
 select(-n_se) 

kable(caption = "Table 43. Justifiable: Adultery ", t(F128))
Table 43. Justifiable: Adultery
Year 1999 2008
n 1160 1456
Mean 2.5 1.9
Mean_low 2.4 1.8
Mean_upp 2.6 2.0
## F135 Justifiable: Sex under the legal age of consent

F135<- att %>% select (F135, Weight, Year) %>% na.omit() %>%
 as_survey(weights = Weight) %>%
 group_by(Year) %>%
 summarize(n = round(survey_total()),
      Mean= round(survey_mean(F135, vartype = "ci"), 1))%>%
 as.data.frame() %>%
 select(-n_se) 

kable(caption = "Table 44. Justifiable: Sex under the legal age of consent", t(F135))
Table 44. Justifiable: Sex under the legal age of consent
Year 1999
n 1106
Mean 2.7
Mean_low 2.6
Mean_upp 2.9
## F119 Justifiable: Prostitution

F119<- att %>% select (F119, Weight, Year) %>% na.omit() %>%
 as_survey(weights = Weight) %>%
 group_by(Year) %>%
 summarize(n = round(survey_total()),
      Mean= round(survey_mean(F119, vartype = "ci"), 1))%>%
 as.data.frame() %>%
 select(-n_se) 

kable(caption = "Table 45. Justifiable: Prostitution", t(F119))
Table 45. Justifiable: Prostitution
Year 1996 1999 2006 2008 2011 2020
n 2580 1162 914 1428 1500 2670
Mean 2.2 2.1 2.5 1.9 2.6 3.0
Mean_low 2.1 1.9 2.3 1.8 2.5 2.8
Mean_upp 2.2 2.2 2.6 2.0 2.7 3.2
merged_df8 <- full_join(F121, F119,by = "Year") %>%
 rename(Mean_F121 = Mean.x,
     Mean_F119 = Mean.y
 ) %>%
 full_join(F118, by = "Year") %>%
 rename(Mean_F118 = Mean
 ) %>%
 full_join(F120, by = "Year") %>%
 rename(Mean_F120 = Mean
 ) %>%
  full_join(F128, by = "Year") %>%
 rename(Mean_F128 = Mean
 ) %>%
  full_join(F132, by = "Year") %>%
 rename(Mean_F132 = Mean
 ) %>%
  full_join(F135, by = "Year") %>%
 rename(Mean_F135 = Mean
 ) %>%
  full_join(F135A, by = "Year") %>%
 rename(Mean_F135A = Mean
 ) %>%
  select(Year, Mean_F121, Mean_F119, Mean_F118, Mean_F120,
      Mean_F128, Mean_F132, Mean_F135, Mean_F135A)

merged_df8t <- merged_df8 %>%
  rename("Divorce" = Mean_F121,
         "Prostitution" = Mean_F119,
         "Homosexuality" = Mean_F118,
         "Abortion" = Mean_F120,
         "Adultery" = Mean_F128,
         "Having casual sex" = Mean_F132,
         "Sex under the legal age of consent" = Mean_F135,
         "Sex before marriage" = Mean_F135A)


kable(caption = "Table 46. Justifiable aspects of sexual behavior and relationships (for Figure 12)", t(merged_df8t))
Table 46. Justifiable aspects of sexual behavior and relationships (for Figure 12)
Year 1996 1999 2006 2008 2011 2020
Divorce 4.9 4.5 4.9 4.3 5.5 5.7
Prostitution 2.2 2.1 2.5 1.9 2.6 3.0
Homosexuality 2.0 2.3 2.5 1.6 2.5 2.6
Abortion 4.2 3.8 3.9 3.4 3.7 4.2
Adultery 2.5 1.9
Having casual sex 2.8 2.5 3.8
Sex under the legal age of consent 2.7
Sex before marriage 5.7 5.9
fig12 <- plot_ly(
 merged_df8,
 x = ~ Year ,
 y = ~ Mean_F118,
 type = 'bar',
 width = 700,
 height = 500,
  name = "Homosexuality",
  hovertext = ~ paste("Homosexuality:",
            Mean_F118), marker = list(color = "brown"))%>%
 add_trace(
  y = ~ Mean_F119,
  name = "Prostitution",
  hovertext = ~ paste(
   "Prostitution:",
   Mean_F119), marker = list(color = ""))%>%
  add_trace(
  y = ~ Mean_F128,
  name = "Adultery",
  hovertext = ~ paste(
   "Adultery:",
   Mean_F128), marker = list(color = ""))%>%
   add_trace(
  y = ~ Mean_F135,
  name = "Sex under the legal age of consent",
  hovertext = ~ paste("Sex under the legal age of consent:",
            Mean_F135), marker = list(color = ""))%>%
  add_trace(
  y = ~ Mean_F132,
  name = "Having casual sex",
  hovertext = ~ paste("Having casual sex:",
            Mean_F132), marker = list(color = "")) %>%
 add_trace(
  y = ~ Mean_F120,
  name = "Abortion",
  hovertext = ~ paste("Abortion:",
            Mean_F120), marker = list(color = ""))%>%
add_trace(
x = ~ Year ,
 y = ~ Mean_F121,
 name = "Divorce",
 hovertext = ~ paste("Divorce:",
           Mean_F121), marker = list(color = ""))%>%
 add_trace(
  y = ~ Mean_F135A,
  name = "Sex before marriage",
  hovertext = ~ paste("Sex before marriage:",
            Mean_F135A), marker = list(color = "")) %>%
 layout(xaxis = list(title = "")) %>%
 layout(yaxis = list(title = "Mean")) %>%
 layout(legend = list(
  orientation = "h",
  xanchor = "center",
  x = 0.5
 )) %>%
  layout(
  annotations =
   list(
    x = 0.57,
    y = -0.37,
    text = "Authors' calculations based on the IVS data, weighted results.",
    showarrow = F,
    xref = 'paper',
    yref = 'paper',
    xanchor = 'right',
    yanchor = 'auto',
    xshift = 0,
    yshift = 0,
    font = list(size = 11, color = "grey")
   )
 )

fig12

Figure 12. Justifiable aspects of sexual behavior and relationships

fig13 <- plot_ly(
 data = F121gsw,
 x = ~ Year,
 y = ~ `Builders`,
 name = "Builders",
 type = "scatter",
 mode = "lines",
 width = 700,
 height = 500) %>%
 add_trace(y = ~ `Baby Boomers`, name = "Baby Boomers") %>%
 add_trace(y = ~ `Generation X`, name = "Generation X") %>%
 add_trace(y = ~ `Generation Y`, name = "Generation Y") %>%
 add_markers(x = ~ Year[Year == 2020],
       y = ~ `Generation Z`,
       name = "Generation Z") %>%
 layout(xaxis = list(title = "")) %>%
 layout(yaxis = list(title = "Mean")) %>%
 layout(legend = list(
  orientation = "h",
  xanchor = "center",
  x = 0.5
 )) %>%
  layout(
  annotations =
   list(
    x = 0.57,
    y = -0.2,
    text = "Authors' calculations based on the IVS data, weighted results.",
    showarrow = F,
    xref = 'paper',
    yref = 'paper',
    xanchor = 'right',
    yanchor = 'auto',
    xshift = 0,
    yshift = 0,
    font = list(size = 11, color = "grey")
   )
 )

fig13

Figure 13. Justifiable aspect of divorce by generational cohort

fig14 <- plot_ly(
 data = F120gsw,
 x = ~ Year,
 y = ~ `Builders`,
 name = "Builders",
 type = "scatter",
 mode = "lines",
 width = 700,
 height = 500) %>%
 add_trace(y = ~ `Baby Boomers`, name = "Baby Boomers") %>%
 add_trace(y = ~ `Generation X`, name = "Generation X") %>%
 add_trace(y = ~ `Generation Y`, name = "Generation Y") %>%
 add_markers(x = ~ Year[Year == 2020],
       y = ~ `Generation Z`,
       name = "Generation Z") %>%
 layout(xaxis = list(title = "")) %>%
 layout(yaxis = list(title = "Mean")) %>%
 layout(legend = list(
  orientation = "h",
  xanchor = "center",
  x = 0.5
 )) %>%
 layout(
  annotations =
   list(
    x = 0.57,
    y = -0.2,
    text = "Authors' calculations based on the IVS data, weighted results.",
    showarrow = F,
    xref = 'paper',
    yref = 'paper',
    xanchor = 'right',
    yanchor = 'auto',
    xshift = 0,
    yshift = 0,
    font = list(size = 11, color = "grey")
   )
 )

fig14

Figure 14. Justifiable aspect of abortion by generational cohort

fig15 <- plot_ly(
 data = F118gsw,
 x = ~ Year,
 y = ~ `Builders`,
 name = "Builders",
 type = "scatter",
 mode = "lines",
 width = 700,
 height = 500) %>%
 add_trace(y = ~ `Baby Boomers`, name = "Baby Boomers") %>%
 add_trace(y = ~ `Generation X`, name = "Generation X") %>%
 add_trace(y = ~ `Generation Y`, name = "Generation Y") %>%
 add_markers(x = ~ Year[Year == 2020],
       y = ~ `Generation Z`,
       name = "Generation Z") %>%
 layout(xaxis = list(title = "")) %>%
 layout(yaxis = list(title = "Mean")) %>%
 layout(legend = list(
  orientation = "h",
  xanchor = "center",
  x = 0.5
 )) %>%
  layout(
  annotations =
   list(
    x = 0.57,
    y = -0.2,
    text = "Authors' calculations based on the IVS data, weighted results.",
    showarrow = F,
    xref = 'paper',
    yref = 'paper',
    xanchor = 'right',
    yanchor = 'auto',
    xshift = 0,
    yshift = 0,
    font = list(size = 11, color = "grey")
   )
 )

fig15

Figure 15. Justifiable aspect of homosexuality by generational cohort

Section 9. Justifiable aspects of life termination and the death penalty

## F122 Justifiable: Euthanasia

F122<- att %>% select (F122, Weight, Year) %>% na.omit() %>%
 as_survey(weights = Weight) %>%
 group_by(Year) %>%
 summarize(n = round(survey_total()),
      Mean= round(survey_mean(F122, vartype = "ci"), 1))%>%
 as.data.frame() %>%
 select(-n_se) 

kable(caption = "Table 47. Justifiable: Euthanasia", t(F122))
Table 47. Justifiable: Euthanasia
Year 1996 1999 2006 2008 2020
n 2188 1033 836 1286 2405
Mean 4.7 5.2 4.6 3.7 4.6
Mean_low 4.6 5.0 4.3 3.5 4.3
Mean_upp 4.9 5.4 4.8 3.9 4.9
## F123 Justifiable: Suicide

F123<- att %>% select (F123, Weight, Year) %>% na.omit() %>%
 as_survey(weights = Weight) %>%
 group_by(Year) %>%
 summarize(n = round(survey_total()),
      Mean= round(survey_mean(F123, vartype = "ci"), 1))%>%
 as.data.frame() %>%
 select(-n_se) 

kable(caption = "Table 48. Justifiable: Suicide", t(F123))
Table 48. Justifiable: Suicide
Year 1996 1999 2006 2008 2011 2020
n 2492 1134 906 1434 1500 2722
Mean 2.0 1.9 2.2 1.4 1.9 2.1
Mean_low 1.9 1.8 2.0 1.4 1.8 2.0
Mean_upp 2.1 2.0 2.3 1.5 2.0 2.3
## F144_02 Justifiable: Death penalty

F144_02<- att %>% select (F144_02, Weight, Year) %>% na.omit() %>%
 as_survey(weights = Weight) %>%
 group_by(Year) %>%
 summarize(n = round(survey_total()),
      Mean= round(survey_mean(F144_02, vartype = "ci"), 1))%>%
 as.data.frame() %>%
 select(-n_se) 

kable(caption = "Table 49. Justifiable: Death penalty", t(F144_02))
Table 49. Justifiable: Death penalty
Year 2008 2020
n 1346 2516
Mean 4.8 4.4
Mean_low 4.6 4.1
Mean_upp 4.9 4.7
merged_df9 <- full_join(F123, F122,by = "Year") %>%
 rename(Mean_F123 = Mean.x,
     Mean_F122 = Mean.y
 ) %>%
 full_join(F144_02, by = "Year") %>%
 rename(Mean_F144_02 = Mean
 ) %>%
  select(Year, Mean_F123, Mean_F122, Mean_F144_02)

merged_df9t <- merged_df9 %>%
  rename("Suicide" = Mean_F123,
         "Euthanasia" = Mean_F122,
         "Death penalty" = Mean_F144_02)

kable(caption = "Table 50. Justifiable aspects of life termination and the death penalty (for Figure 16)", t(merged_df9t))
Table 50. Justifiable aspects of life termination and the death penalty (for Figure 16)
Year 1996 1999 2006 2008 2011 2020
Suicide 2.0 1.9 2.2 1.4 1.9 2.1
Euthanasia 4.7 5.2 4.6 3.7 4.6
Death penalty 4.8 4.4
fig16 <- plot_ly(
 merged_df9,
 x = ~ Year ,
 y = ~ Mean_F123,
 type = 'bar',
 width = 700,
 height = 500,
 name = "Suicide",
 hovertext = ~ paste("Suicide:",
           Mean_F123)
) %>%
 add_trace(
  y = ~ Mean_F122,
  name = "Euthanasia",
  hovertext = ~ paste(
   "Euthanasia:",
   Mean_F122
  )
 ) %>%
 add_trace(
  y = ~ Mean_F144_02,
  name = "Death penalty",
  hovertext = ~ paste("Death penalty:",
            Mean_F144_02)) %>%
  layout(xaxis = list(title = "")) %>%
 layout(yaxis = list(title = "Mean")) %>%
 layout(legend = list(
  orientation = "h",
  xanchor = "center",
  x = 0.5
 )) %>%
 layout(
  title = list(text =
          "Figure 16. Justifiable aspects of life termination and the death penalty")
 ) %>%
 layout(
  annotations =
   list(
    x = 0.57,
    y = -0.2,
    text = "Authors' calculations based on the IVS data, weighted results.",
    showarrow = F,
    xref = 'paper',
    yref = 'paper',
    xanchor = 'right',
    yanchor = 'auto',
    xshift = 0,
    yshift = 0,
    font = list(size = 11, color = "grey")
   )
 )

fig16

Figure 16. Justifiable aspects of life termination and the death penalty

Annex

# Explore data

respondents_per_year <- att %>%
  group_by(Year) %>%
  count()

kable(caption = "Table 51. The ISV data sample  sizes", t(respondents_per_year))
Table 51. The ISV data sample sizes
Year 1996 1999 2006 2008 2011 2020
n 2811 1195 1000 1507 1500 2901
cat("Unweighted results.")

Unweighted results.

respondents_count <- att1 %>%
  rename(Year_WVS = A_YEAR) %>%
  count(Year_WVS)

kable(caption = "Table 52. The WVS data sample size", t(respondents_count)) 
Table 52. The WVS data sample size
Year_WVS 2020
n 1289
cat("Unweighted results.")

Unweighted results.

ordered_pivot_result <- att %>%
  group_by(Year, Generation) %>%
  summarize(
    min_b_y = round(min(birthyear)),
    max_b_y = round(max(birthyear))
  ) %>%
  pivot_wider(
    names_from = Year,
    values_from = c(min_b_y, max_b_y),
    names_prefix = "year_"
  ) %>%
  select(
    Generation,
    "min_b_y_year_1996",
    "max_b_y_year_1996",
    "min_b_y_year_1999",
    "max_b_y_year_1999",
    "min_b_y_year_2006",
    "max_b_y_year_2006",
    "min_b_y_year_2008",
    "max_b_y_year_2008",
    "min_b_y_year_2011",
    "max_b_y_year_2011",
    "min_b_y_year_2020",
    "max_b_y_year_2020"
  ) 

ordered_pivot_result1 <- mutate(ordered_pivot_result,
"1996" = paste0(min_b_y_year_1996, " - ", max_b_y_year_1996),
"1999" = paste0(min_b_y_year_1999, " - ", max_b_y_year_1999),
"2006" = paste0(min_b_y_year_2006, " - ", max_b_y_year_2006), 
"2008" = paste0(min_b_y_year_2008, " - ", max_b_y_year_2008),
"2011" = paste0(min_b_y_year_2011, " - ", max_b_y_year_2011),
"2020" = paste0(min_b_y_year_2020, " - ", max_b_y_year_2020)
)


ordered_pivot_result2 <- select(ordered_pivot_result1,
Generation,
"1996",
"1999",
"2006",
"2008",
"2011",
"2020")%>%
mutate(across(c("1996", "1999", "2006", "2008", "2011", "2020"),
~replace(.x, .x == "NA - NA", NA)))

kable(caption = "Table 53. Minimum and maximum age in generational cohorts by survey year", ordered_pivot_result2)
Table 53. Minimum and maximum age in generational cohorts by survey year
Generation 1996 1999 2006 2008 2011 2020
Builders 1905 - 1945 1909 - 1945 1916 - 1945 1915 - 1945 1922 - 1945 1934 - 1945
Baby Boomers 1946 - 1964 1946 - 1964 1946 - 1964 1946 - 1964 1946 - 1964 1946 - 1964
Generation X 1965 - 1978 1965 - 1979 1965 - 1979 1965 - 1979 1965 - 1979 1965 - 1979
Generation Y 1980 - 1981 1980 - 1988 1980 - 1990 1980 - 1993 1980 - 1994
Generation Z 1995 - 2002
cat("Unweighted results.")

Unweighted results.

cross_table <- att %>%
  group_by(Generation, Year) %>%
  summarize(WeightedSum = sum(Weight)) %>%
  mutate(WeightedSum = round(WeightedSum)) %>%
  pivot_wider(names_from = Generation, values_from = WeightedSum) 

head(t(cross_table )) %>%
  kable(caption = "Table 54. Minimum and maximum age in generational cohorts by survey year")
Table 54. Minimum and maximum age in generational cohorts by survey year
Year 1996 1999 2006 2008 2011 2020
Builders 1068 394 233 326 263 218
Baby Boomers 1148 456 335 472 475 828
Generation X 595 313 260 387 351 765
Generation Y 44 172 321 411 825
Generation Z 300

For attribution, please cite this work as:
Andrii Bova. (2023). Interactive Visualization of Trends in Ukrainian Moral Attitudes using R. September 1, 2023. URL: https://rpubs.com/abova/tuma.

Last updated: 2023-09-01