GSS_assignment

library(tidyverse)
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.1.4     ✔ readr     2.1.4
✔ forcats   1.0.0     ✔ stringr   1.5.1
✔ ggplot2   3.4.4     ✔ tibble    3.2.1
✔ lubridate 1.9.3     ✔ tidyr     1.3.0
✔ purrr     1.0.2     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(readxl)                   
library(plotly)                   

Attaching package: 'plotly'

The following object is masked from 'package:ggplot2':

    last_plot

The following object is masked from 'package:stats':

    filter

The following object is masked from 'package:graphics':

    layout
survey <- read_excel("GSS_assignment.xlsx")
  1. Below you will find a histogram that displays the number of different races participating within this data set.
survey |> 
  mutate(race = as_factor(race)) |> 
  
  mutate(race = fct_recode(race,
                            NULL = ".i:  Inapplicable")) |>
  
  
  drop_na(race) |> 
  
  mutate(race = fct_infreq(race)) |> 
  
  plot_ly(x = ~race) |> 
  add_histogram()
  1. Below is the histogram for spanking. The answers range from strongly agree to strongly disagree in the use of spanking.
survey |> 
  mutate(spanking = as_factor(spanking)) |> 
  
  mutate(spanking = fct_recode(spanking,
                            NULL = ".d:  Do not Know/Cannot Choose",
                            NULL = ".i:  Inapplicable",
                            NULL = ".n:  No answer",
                            NULL = ".s:  Skipped on Web")) |> 

  drop_na(spanking) |> 
  

  plot_ly(x=~spanking) |> 
  add_histogram()

Below is a combine histogram of different races views on spanking

survey |> 
  mutate(spanking = as_factor(spanking)) |> 
  
  mutate(spanking = fct_recode(spanking,
                            NULL = ".d:  Do not Know/Cannot Choose",
                            NULL = ".i:  Inapplicable",
                            NULL = ".n:  No answer",
                            NULL = ".s:  Skipped on Web")) |> 

  drop_na(spanking) |> 
  
  mutate(spanking = fct_infreq(spanking)) %>% 
  
  mutate(race = fct_recode(race,
                            NULL = ".i:  Inapplicable")) |>
  drop_na(race) %>% 
 
  plot_ly(x=~spanking, color = ~ race) |> 
  add_histogram()
  1. Below you will find the code used to adjust “spanking: as a numeric variable. Further down, there is a boxplot that displays the relationship between views of spanking and race. Spanking seems to be strongly favored more so by the black population that participated in the study.
survey |> 
  mutate(spanking = as_factor(spanking)) |> 
  
  mutate(spanking = fct_recode(spanking,
                            NULL = ".d:  Do not Know/Cannot Choose",
                            NULL = ".i:  Inapplicable",
                            NULL = ".n:  No answer",
                            NULL = ".s:  Skipped on Web")) |>
  
    mutate(spanking = fct_relevel(spanking,
                              c("STRONGLY AGREE",
                                "AGREE",
                                "DISAGREE",
                                "STRONGLY DISAGREE"))) |> 
  drop_na(spanking) |> 
  
  mutate(spanking = as.numeric(spanking)) |> 
  
  count(spanking)
# A tibble: 4 × 2
  spanking     n
     <dbl> <int>
1        1   706
2        2  1274
3        3   810
4        4   453

Boxplot:

survey |> 
  mutate(spanking = as_factor(spanking)) |> 
  
  mutate(spanking = fct_recode(spanking,
                            NULL = ".d:  Do not Know/Cannot Choose",
                            NULL = ".i:  Inapplicable",
                            NULL = ".n:  No answer",
                            NULL = ".s:  Skipped on Web")) |>
  mutate(spanking = fct_relevel(spanking,
                              c("STRONGLY AGREE",
                                "AGREE",
                                "DISAGREE",
                                "STRONGLY DISAGREE"))) |>

  mutate(spanking = as.numeric(spanking)) %>% 


  mutate(race = as_factor(race)) |> 
  
  mutate(race = fct_recode(race,
                            NULL = ".i:  Inapplicable")) %>% 
  

plot_ly(x = ~race, y = ~spanking) |> 
  add_boxplot()
Warning: Ignoring 3097 observations
  1. The histogram below displays the number of children the participants had over the course of this survey.
survey |> 
  mutate(childs = as_factor(childs)) |> 
  
  mutate(childs = fct_recode(childs,
                            NULL = ".d:  Do not Know/Cannot Choose",
                            NULL = ".i:  Inapplicable",
                            "8 or more" = "8")) |>

  drop_na(childs) %>% 

  mutate(childs=fct_infreq(childs)) %>% 
  mutate(childs= as.numeric(childs)) %>% 
  
  plot_ly(x=~childs) |> 
  add_histogram()
Warning: There was 1 warning in `mutate()`.
ℹ In argument: `childs = fct_recode(...)`.
Caused by warning:
! Unknown levels in `f`: 8
  1. box plot for comparisons between the “spanking” and “childs”
survey |> 
  mutate(spanking = as_factor(spanking)) |> 
  
  mutate(spanking = fct_recode(spanking,
                            NULL = ".d:  Do not Know/Cannot Choose",
                            NULL = ".i:  Inapplicable",
                            NULL = ".n:  No answer",
                            NULL = ".s:  Skipped on Web")) |>
  mutate(spanking = fct_relevel(spanking,
                              c("STRONGLY AGREE",
                                "AGREE",
                                "DISAGREE",
                                "STRONGLY DISAGREE"))) |>
mutate(childs = as_factor(childs)) |> 
  
  mutate(childs = recode(childs,
                            NULL = ".d:  Do not Know/Cannot Choose",
                            NULL = ".i:  Inapplicable")) |>
  

  mutate(childs= as.numeric(childs)) %>% 
  

plot_ly(x = ~spanking, y = ~childs) |> 
  add_boxplot()
Warning: Ignoring 3066 observations
  1. Histogram for participants and their views within their marriage
survey |> 
  mutate(hapmar = as_factor(hapmar)) |> 
  
  mutate(hapmar = fct_recode(hapmar,
                            NULL = ".d:  Do not Know/Cannot Choose",
                            NULL = ".i:  Inapplicable",
                            NULL = ".n:  No answer",
                            NULL = ".s:  Skipped on Web")) |> 

  drop_na(hapmar) |> 
  

  plot_ly(x=~hapmar) |> 
  add_histogram()
  1. Below is a histogram below indicating the different class levels (lower -> upper class)
survey |> 
  mutate(class_ = as_factor(class_)) |> 
  
  mutate(class_ = fct_recode(class_,
                            NULL = ".d:  Do not Know/Cannot Choose",
                            NULL = ".n:  No answer",
                            NULL = ".s:  Skipped on Web")) |> 

  drop_na(class_) |> 
  
  
  mutate(class_=fct_infreq(class_)) %>% 
  mutate(class_ = factor(class_, levels = c("Lower class", "Working class", "Middle class", "Upper class"))) %>%

  plot_ly(x=~class_) |> 
  add_histogram()
  1. Below you will find comparison of happy marraiges within different working classes. It appears middle class shows higher rates of very happy marraiges.
survey |> 
 
  
  mutate(hapmar = fct_recode(hapmar,
                            NULL = ".d:  Do not Know/Cannot Choose",
                            NULL = ".i:  Inapplicable",
                            NULL = ".n:  No answer",
                            NULL = ".s:  Skipped on Web")) |> 
  drop_na(hapmar) %>% 
  
   mutate(class_ = as_factor(class_)) |> 
  
  mutate(class_ = fct_recode(class_,
                            NULL = ".d:  Do not Know/Cannot Choose",
                            NULL = ".n:  No answer",
                            NULL = ".s:  Skipped on Web")) |> 

  drop_na(class_) |> 
  
  mutate(class_ = factor(class_, levels = c("Lower class", "Working class", "Middle class", "Upper class"))) %>%

  
  mutate(class_=fct_infreq(class_)) %>% 
 
  plot_ly(x=~class_, color = ~ hapmar) |> 
  add_histogram()
  1. Below is the code used to collapse different age groups for the histogram. It appears more individuals in their 30’s participated within this dataset.
survey |> 
  
mutate(age = as_factor(age)) |> 
mutate(age = fct_recode(age,
                            NULL = ".n:  No answer",
                        NULL = "89 or older")) |> 
mutate(age = fct_collapse(age,
                              "Under 30" = c("18",
                                          "19",
                                          "20",
                                          "21",
                                          "22",
                                          "23",
                                          "24",
                                          "25",
                                          "26",
                                          "27",
                                          "28",
                                          "29"),
                              "30s" = c("30", "31", "32", "33", "34", "35", "36", "37", "38", "39"),
                          "40s" = c("40", "41", "42", "43", "44", "45", "46", "47", "48", "49"),
                          "50s" = c("50", "51", "52", "53", "54", "55", "56", "57", "58", "59"),
                          "60s" = c("60", "61", "62", "63", "64", "65", "66", "67", "68", "69"),
                          "70s"= c("70", "71", "72", "73", "74", "75", "76", "77", "78", "79"),
                          "80 and up" = c("80", "81", "82", "83", "84", "85", "86", "87", "88", "89"))) %>% 
  
  plot_ly(x=~age) |> 
  add_histogram()
Warning: There was 1 warning in `mutate()`.
ℹ In argument: `age = fct_collapse(...)`.
Caused by warning:
! Unknown levels in `f`: 89
Warning: Ignoring 254 observations
  1. Below is a heatmap displaying the relationships between age and marital happiness.Individuals in their 30’s selected “Very Happy” more frequently.
survey |> 
  
mutate(age = as_factor(age)) |> 
mutate(age = fct_recode(age,
                            NULL = ".n:  No answer",
                        NULL = "89 or older")) |> 
mutate(age = fct_collapse(age,
                              "Under 30" = c("18",
                                          "19",
                                          "20",
                                          "21",
                                          "22",
                                          "23",
                                          "24",
                                          "25",
                                          "26",
                                          "27",
                                          "28",
                                          "29"),
                              "30s" = c("30", "31", "32", "33", "34", "35", "36", "37", "38", "39"),
                          "40s" = c("40", "41", "42", "43", "44", "45", "46", "47", "48", "49"),
                          "50s" = c("50", "51", "52", "53", "54", "55", "56", "57", "58", "59"),
                          "60s" = c("60", "61", "62", "63", "64", "65", "66", "67", "68", "69"),
                          "70s"= c("70", "71", "72", "73", "74", "75", "76", "77", "78", "79"),
                          "80 and up" = c("80", "81", "82", "83", "84", "85", "86", "87", "88", "89"))) %>% 
  
  
  
  mutate(hapmar = as_factor(hapmar)) |> 
  
  mutate(hapmar = fct_recode(hapmar,
                            NULL = ".d:  Do not Know/Cannot Choose",
                            NULL = ".i:  Inapplicable",
                            NULL = ".n:  No answer",
                            NULL = ".s:  Skipped on Web")) |> 

  drop_na(hapmar) |> 
  mutate(class_=fct_infreq(hapmar)) %>% 
  

  plot_ly(x = ~hapmar, y = ~age) |> 
  add_histogram2d()
Warning: There was 1 warning in `mutate()`.
ℹ In argument: `age = fct_collapse(...)`.
Caused by warning:
! Unknown levels in `f`: 89