not_included/create_trend.R

library (tidyverse)
library (haven)
library (surveyreader)

metadata <- readxl::read_excel("data-raw/gesis_qb_update.xlsx")
df <- surveyreader:::eb_sample

demography <- create_demography(df, metadata)
summary(demography)

create_trend <- function ( df, metadata, comparative_metadata = FALSE ) {

  m <- metadata %>% filter ( spss_name %in% names(df)  ) %>%
    filter ( sr_trend %in% c(1,3)) %>%
    select ( gesis_name, sr_name, spss_name, new_class, na_id, sr_trend) %>%
    distinct (spss_name, new_class, .keep_all = TRUE)

  main_vars <- m %>% filter ( sr_trend == 1 ) %>%
    select ( sr_name ) %>%
    unlist(.)

  meta_vars <- m %>% filter ( sr_trend == 3 ) %>%
    select ( sr_name ) %>%
    unlist(.)

  all_vars <- c(main_vars, meta_vars)

  character_vars <- m %>%
    filter ( new_class == "character") %>%
    select ( sr_name ) %>%
    unlist(.)

  factor_vars <- m %>%
    filter ( new_class == "factor") %>%
    select ( sr_name ) %>%
    unlist(.)

  rescale_time_frequency_use_vars <- m   %>%
    filter ( new_class == "rescale_time_frequency_use") %>%
    select ( sr_name ) %>%
    unlist(.)

  rescale_time_frequency_3_vars <- m   %>%
    filter ( new_class == "rescale_time_frequency_3") %>%
    select ( sr_name ) %>%
    unlist(.)

  keep_numeric_vars <- m   %>%
    filter ( new_class == "keep_numeric") %>%
    select ( sr_name ) %>%
    unlist(.)

  difficulty_vars <- m   %>%
    filter ( new_class == "rescale_difficulty") %>%
    select ( sr_name, na_id ) %>%
    unlist(.)

  agreement_4_vars <- m   %>%
    filter ( new_class == "rescale_agreement_4") %>%
    select ( sr_name, na_id )

  political_interest_vars <- m   %>%
    filter ( new_class == "rescale_pol_interest") %>%
    select ( sr_name ) %>%
    unlist(.)

  alphanumeric_vars <- m   %>%
    filter ( new_class == "rescale_alphanumeric_en") %>%
    select ( sr_name ) %>%
    unlist(.)

  num_to_chr_vars <- m   %>%
    filter ( new_class == "num_to_chr") %>%
    select ( sr_name ) %>%
    unlist(.)

  satisfaction_vars <- m %>%
    filter ( new_class == "rescale_satisfaction") %>%
    select ( sr_name ) %>%
    unlist(.)

  trend_eu2020_goals_vars <- m %>%
    filter ( new_class == "rescale_eu2020_goals") %>%
    select ( sr_name ) %>%
    unlist(.)

  situation_vars <- m %>%
    filter ( new_class == "rescale_situtation") %>%
    select ( sr_name ) %>%
    unlist(.)

  trust_vars <- m %>%
    filter ( new_class == "rescale_trust") %>%
    select ( sr_name ) %>%
    unlist(.)

  occupation_vars <- m %>%
    filter ( new_class == "rescale_occupation") %>%
    select ( sr_name ) %>%
    unlist(.)

  #haven::print_labels(trend_df$trend_trust_instituton_army)
  #rescale_trust ( trend_df$trend_trust_instituton_army)
  #head ( trend_df$trend_life_satisfaction)


trend_df <- df %>% select ( one_of(m$spss_name)) %>%
  purrr::set_names(., m$sr_name) %>%
  mutate_at ( vars(one_of(num_to_chr_vars)),
              funs(as.character(.))) %>%
  mutate_at ( vars(one_of(character_vars)), haven::as_factor) %>%
  mutate_at ( vars(one_of(character_vars)), as.character)

trend_df <- mutate (trend_df,
                    difficulty_bills = rescale_difficulty (difficulty_bills,
                      na_labels = "Refusal (SPONT.)",
                      messages = FALSE))
message ("Rescaled: Difficulty of paying bills.")

trend_df <- mutate (trend_df, gender = code_gender(gender))
message ("Rescoded: gender.")

trend_df <- mutate (trend_df,
        marital_status = rescale_marital_status(marital_status))
message("Recoded: marital status")

trend_df <- mutate ( trend_df,
              date_interview = rescale_date_interview(date_interview,
              return_class = "Date") )
message("Recoded: date of interview to class Date.")

if ( "political_interest_index" %in% names (trend_df)) {
  trend_df <- mutate (trend_df,
                      political_interest_index = rescale_political_interest(
                        column =political_interest_index ,
                        na_labels = "DK (4 in d71_1, d71_2 and d71_3)"))
  message("Rescaled political interest index.")
} else {
  message("No political interest index variable was found.")
}

if (length(num_to_chr_vars)>0) {
  trend_df <- mutate_at (trend_df,
                         vars(one_of(num_to_chr_vars)),
                          funs(as.character(.)))
  message("Numeric to character conversions.")
}

if ( length(satisfaction_vars)>0) {
  trend_df <-mutate_at ( trend_df,
                         vars(one_of(satisfaction_vars)),
                         funs(rescale_satisfaction(column =.)))
  message("Rescaled: life satisfaction variables.")
}

if ( length(situation_vars) >0) {
  trend_df <- mutate_at ( vars(one_of(situation_vars)),
                          funs(rescale_situtation(column =.)))
  message("Rescaled: situtation assessment trend questions.")
}

if ( length(trust_vars)>0) {
  trend_df <- mutate_at ( trend_df,
                          vars(one_of(trust_vars)),
                          funs(rescale_trust(column =.)))
  message("Rescaled: trust in institutions trend questions.")
}

if ( length(political_interest_vars) > 0 ) {
  trend_df <- mutate_at ( trend_df,
                          vars(one_of(political_interest_vars)),
                          funs( surveyreader::rescale_political_interest(
                            column =.,
                            na_labels = "DK (4 in d71_1, d71_2 and d71_3)")))
  message("Rescaled: political interest trend questions.")
}

if ( length(agreement_4_vars$sr_name) > 0 ) {
  trend_df <- mutate_at ( trend_df,
              vars(one_of (agreement_4_vars$sr_name)),
              funs(surveyreader::rescale_agreement_4(
                 column =.,
                 na_labels = c("DK")) ))
  message("Rescaled: 4-level agreement categories.")
}

if ( length(trend_eu2020_goals_vars) > 0 ) {
  trend_df <- mutate_at ( trend_df,
                          vars(one_of( trend_eu2020_goals_vars)),
                          surveyreader::rescale_eu2020_goals)
  message("Rescaled: EU2020 goal trend questions.")
}

if ( length(rescale_time_frequency_use_vars)>0) {
  mutate_at ( trend_df,
              vars(one_of( rescale_time_frequency_use_vars)),
              surveyreader::rescale_time_frequency_use)
  message("Rescaled time frequencies of using things variables.")
}
if ( length(rescale_time_frequency_3_vars)>0) {
  mutate_at ( trend_df,
              vars(one_of( rescale_time_frequency_use_vars)),
              surveyreader::rescale_time_frequency_3)
  message("Rescaled 3-level time frequencies.")
}

if ( length(occupation_vars )>0) {
  mutate_at ( trend_df,
              vars(one_of( occupation_vars )),
              surveyreader::rescale_occupation)
  message("Rescaled occupation (last job) variables. ")
}

if ( length(alphanumeric_vars )>0) {
  mutate_at ( trend_df,
              vars(one_of( alphanumeric_vars )),
              surveyreader::rescale_alphanumeric_en)
  message("Recoded alphanumeric variables, i.e. 'twenty', etc..")
}

if ( length(keep_numeric_vars )>0) {
  mutate_at ( trend_df,
              vars(one_of( keep_numeric_vars )),
              surveyreader::keep_numeric)
  message("Recoded numeric variables with units or other string.")
}

main <- select(trend_df, uniqid, one_of(main_vars))
  summary (main)
  clean_df <- cbind(
         select (trend_df, uniqid),
         select (trend_df, one_of(main_vars), -uniqid),
         select (trend_df, one_of(meta_vars), -uniqid))

  #clean_df[] <- lapply(clean_df, unclass)
  #summary (clean_df)

 return(clean_df)
}

#df <- sample_n(imported_spss, 120)
#print_labels(df$qb3.1)

#trend_df <- create_trend (df, metadata)
#trends <- create_trend(imported_spss, metadata)
#summary (trend_df)
antaldaniel/surveyreader documentation built on May 16, 2019, 2:29 a.m.