GSS Assignment_Brittanee Fisher PSYC 541

library(tidyverse)
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.1.4     ✔ readr     2.1.5
✔ 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")

glimpse(survey)
Rows: 6,309
Columns: 15
$ year     <dbl> 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2…
$ id_      <dbl> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18…
$ hrs2     <chr> ".i:  Inapplicable", ".i:  Inapplicable", ".i:  Inapplicable"…
$ childs   <chr> "0", "1", "1", "1", "2", "1", "2", "2", "2", "0", "2", "3", "…
$ age      <chr> "25", "43", "30", "55", "37", "47", "57", "71", "46", "19", "…
$ sex      <chr> "FEMALE", "MALE", "FEMALE", "FEMALE", "MALE", "MALE", "FEMALE…
$ race     <chr> "White", "White", "White", "White", "White", "White", "White"…
$ courts   <chr> "About right", "Not harshly enough", ".i:  Inapplicable", ".i…
$ relig    <chr> "Inter-nondenominational", "Protestant", "Protestant", "Prote…
$ attend   <chr> "About once or twice a year", "About once a month", "Every we…
$ hapmar   <chr> ".i:  Inapplicable", "PRETTY HAPPY", ".i:  Inapplicable", ".i…
$ class_   <chr> "Middle class", "Middle class", "Working class", "Upper class…
$ premarsx <chr> "ALWAYS WRONG", ".i:  Inapplicable", ".i:  Inapplicable", ".i…
$ xmarsex  <chr> "ALWAYS WRONG", "ALWAYS WRONG", ".i:  Inapplicable", ".i:  In…
$ spanking <chr> "STRONGLY AGREE", ".i:  Inapplicable", ".i:  Inapplicable", "…
survey |> 
  mutate(race = as_factor(race)) |> 
  
  mutate(race = fct_recode(race, NULL = ".i:  Inapplicable")) |> 
  
  drop_na(race) |>
  
  
  plot_ly(x = ~race) |>
  add_histogram()

This graph shows the frequency of race in the survey population.

survey |> 
  mutate(spanking = as_factor(spanking)) |> 
  
  mutate(spanking = fct_recode(spanking,
                               "Strongly Agree" = "STRONGLY AGREE",
                               "Agree" = "AGREE",
                               "Disagree" = "DISAGREE",
                               "Strongly Disagree" = "STRONGLY DISAGREE",
                           NULL = ".i:  Inapplicable",
                           NULL = ".n:  No answer",
                           NULL = ".d:  Do not Know/Cannot Choose",
                           NULL = ".s:  Skipped on Web")) |> 
  
  drop_na(spanking) |>
  
  
  plot_ly(x = ~spanking) |>
  add_histogram()

This graph shows opinions on spanking across the survey population.

survey |> 
  mutate(spanking = as_factor(spanking)) |> 
  
  mutate(spanking = fct_recode(spanking,
                               "Strongly Agree" = "STRONGLY AGREE",
                               "Agree" = "AGREE",
                               "Disagree" = "DISAGREE",
                               "Strongly Disagree" = "STRONGLY DISAGREE",
                           NULL = ".i:  Inapplicable",
                           NULL = ".n:  No answer",
                           NULL = ".d:  Do not Know/Cannot Choose",
                           NULL = ".s:  Skipped on Web")) |> 
  
      mutate(spanking = fct_relevel(spanking,
                                c("Strongly Agree",
                                  "Agree",
                                  "Disagree",
                                  "Strongly Disagree"))) |>
  mutate(spanking = as.numeric(spanking)) |>
  
  drop_na(spanking) |>
  
  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, y = ~spanking) |>
  add_boxplot()

This graph shows the opinions of spanking in the survey population based on race.

survey |> 
  
  mutate(childs = as_factor(childs)) |>
  mutate(childs = fct_recode(childs,
                               "8" = "8 or more",
                           NULL = ".i:  Inapplicable",
                           NULL = ".d:  Do not Know/Cannot Choose")) |> 
  mutate(childs = fct_relevel(childs,
                              c("0",
                                "1",
                                "2",
                                "3",
                                "4",
                                "5",
                                "6",
                                "7",
                                "8"))) |>
  
  drop_na(childs) |>
  
  
  plot_ly(x = ~childs) |>
  add_histogram()  

This graph shows the number of children people have within the survey population.

survey |> 
  mutate(spanking = as_factor(spanking)) |> 
  
  mutate(spanking = fct_recode(spanking,
                               "Strongly Agree" = "STRONGLY AGREE",
                               "Agree" = "AGREE",
                               "Disagree" = "DISAGREE",
                               "Strongly Disagree" = "STRONGLY DISAGREE",
                           NULL = ".i:  Inapplicable",
                           NULL = ".n:  No answer",
                           NULL = ".d:  Do not Know/Cannot Choose",
                           NULL = ".s:  Skipped on Web")) |> 
  mutate(spanking = fct_relevel(spanking,
                                c("Strongly Agree",
                                  "Agree",
                                  "Disagree",
                                  "Strongly Disagree")))  |>
  
  drop_na(spanking) |>
  
   mutate(childs = as_factor(childs)) |>
  mutate(childs = fct_recode(childs,
                               "8" = "8 or more",
                           NULL = ".i:  Inapplicable",
                           NULL = ".d:  Do not Know/Cannot Choose")) |> 
  mutate(childs = fct_relevel(childs,
                              c("0",
                                "1",
                                "2",
                                "3",
                                "4",
                                "5",
                                "6",
                                "7",
                                "8"))) |>
  
  drop_na(childs) |>
  
  plot_ly(x = ~spanking, y = ~childs) |>
  add_boxplot()  

This graph shows the opinions on spanking in the survey population based on the number of children a family has.

survey |> 
  mutate(hapmar = as_factor(hapmar)) |>
  mutate(hapmar = fct_recode(hapmar,
                             "Not Too Happy" = "NOT TOO HAPPY",
                             "Pretty Happy" = "PRETTY HAPPY",
                             "Very Happy" = "VERY HAPPY",
                              NULL = ".i:  Inapplicable",
                           NULL = ".n:  No answer",
                           NULL = ".d:  Do not Know/Cannot Choose",
                           NULL = ".s:  Skipped on Web")) |>
  
  mutate(hapmar = fct_relevel(hapmar,
                              c("Not Too Happy",
                                "Pretty Happy",
                                "Very Happy"))) |>
  drop_na(hapmar) |>
  plot_ly(x = ~hapmar) |>
  add_histogram()

This graph shows how happy people are with their marriages in the survey population.

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_relevel(class_,
                              "Lower class",
                              "Working class",
                              "Middle class",
                              "Upper class")) |>
  plot_ly(x = ~class_) |>
  add_histogram()

This graph shows the spread of economic classes within the survey population.

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_relevel(class_,
                              "Lower class",
                              "Working class",
                              "Middle class",
                              "Upper class")) |>
   mutate(hapmar = as_factor(hapmar)) |>
  mutate(hapmar = fct_recode(hapmar,
                             "Not Too Happy" = "NOT TOO HAPPY",
                             "Pretty Happy" = "PRETTY HAPPY",
                             "Very Happy" = "VERY HAPPY",
                              NULL = ".i:  Inapplicable",
                           NULL = ".n:  No answer",
                           NULL = ".d:  Do not Know/Cannot Choose",
                           NULL = ".s:  Skipped on Web")) |>
  
  mutate(hapmar = fct_relevel(hapmar,
                              c("Not Too Happy",
                                "Pretty Happy",
                                "Very Happy"))) |>
  drop_na(hapmar) |>
  
  plot_ly(x = ~class_, color = ~hapmar) |>
  add_histogram()

This graph shows level of happiness in ones marriage according to each economic class with in the survey population.

survey |> 
  mutate(age = as_factor(age)) |>
  mutate(age = fct_recode(age,
                          NULL = ".n:  No answer")) |>
  drop_na(age) |>
  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 or older"))) |>
  mutate(age = fct_relevel(age,
                           c("Under 30",
                             "30s",
                             "40s",
                             "50s",
                             "60s",
                             "70s",
                             "80 and up"))) |>
  plot_ly(x = ~age) |>
  add_histogram()

This graph shows the frequency of age within the survey population.

survey |>
 mutate(age = as_factor(age)) |>
  mutate(age = fct_recode(age,
                          NULL = ".n:  No answer")) |>
  drop_na(age) |>
  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 or older"))) |>
  mutate(age = fct_relevel(age,
                           c("Under 30",
                             "30s",
                             "40s",
                             "50s",
                             "60s",
                             "70s",
                             "80 and up"))) |>
  mutate(hapmar = as_factor(hapmar)) |>
  mutate(hapmar = fct_recode(hapmar,
                             "Not Too Happy" = "NOT TOO HAPPY",
                             "Pretty Happy" = "PRETTY HAPPY",
                             "Very Happy" = "VERY HAPPY",
                              NULL = ".i:  Inapplicable",
                           NULL = ".n:  No answer",
                           NULL = ".d:  Do not Know/Cannot Choose",
                           NULL = ".s:  Skipped on Web")) |>
  
  mutate(hapmar = fct_relevel(hapmar,
                              c("Not Too Happy",
                                "Pretty Happy",
                                "Very Happy"))) |>
  drop_na(hapmar) |>
  plot_ly(x = ~age, y = ~hapmar) |>
  add_histogram2d()

This graph shows the level of happiness in ones marriage based on age of the survey population.