mirror of
https://github.com/Rucknium/misc-research.git
synced 2025-01-02 16:49:23 +00:00
413 lines
13 KiB
R
413 lines
13 KiB
R
|
||
|
||
library(data.table)
|
||
library(readstata13)
|
||
library(survey)
|
||
|
||
|
||
SHED <- list()
|
||
|
||
SHED[["2021"]] <- readstata13::read.dta13("raw-data/SHED_2021/public2021.dta", generate.factors = TRUE, nonint.factors = TRUE)
|
||
SHED[["2022"]] <- readstata13::read.dta13("raw-data/SHED_2022/public2022.dta", generate.factors = TRUE, nonint.factors = TRUE)
|
||
SHED[["2023"]] <- readstata13::read.dta13("raw-data/SHED_2023/public2023.dta", generate.factors = TRUE, nonint.factors = TRUE)
|
||
|
||
crypto.used.as.payment_annual.trend <- c()
|
||
|
||
for (i in names(SHED)) {
|
||
SHED[[i]]$crypto.used.as.payment <- SHED[[i]]$S16_b == "Yes"
|
||
SHED[[i]] <- svydesign(ids = ~0, data = SHED[[i]], weights = SHED[[i]]$weight)
|
||
crypto.used.as.payment_annual.trend[[i]] <-
|
||
round(100 * as.data.frame(svymean(~ crypto.used.as.payment, design = SHED[[i]], na.rm = TRUE))[2, 1], 1)
|
||
}
|
||
|
||
saveRDS(crypto.used.as.payment_annual.trend, file = "processed-data/SHED-annual-trend.rds")
|
||
|
||
|
||
# Then re-do it for the pooled dataset
|
||
|
||
|
||
SHED <- list()
|
||
|
||
SHED[["2021"]] <- readstata13::read.dta13("raw-data/SHED_2021/public2021.dta", generate.factors = TRUE, nonint.factors = TRUE)
|
||
SHED[["2022"]] <- readstata13::read.dta13("raw-data/SHED_2022/public2022.dta", generate.factors = TRUE, nonint.factors = TRUE)
|
||
SHED[["2023"]] <- readstata13::read.dta13("raw-data/SHED_2023/public2023.dta", generate.factors = TRUE, nonint.factors = TRUE)
|
||
|
||
|
||
colnames(SHED[["2021"]]) <- paste0(colnames(SHED[["2021"]]), ".2021")
|
||
colnames(SHED[["2022"]]) <- paste0(colnames(SHED[["2022"]]), ".2022")
|
||
colnames(SHED[["2023"]]) <- paste0(colnames(SHED[["2023"]]), ".2023")
|
||
|
||
SHED.panel <- merge(SHED[["2021"]], SHED[["2022"]], by.x = "CaseID.2021", by.y = "caseid2021.2022",
|
||
all = TRUE)
|
||
|
||
SHED.panel <- merge(SHED.panel, SHED[["2023"]], by.x = "CaseID.2022", by.y = "caseid2022.2023",
|
||
all = TRUE, incomparables = NA)
|
||
# NOTE: merge.data.frame() and merge.data.table() have different behaviors with incomparables = NA
|
||
|
||
|
||
|
||
|
||
pooled.vars <- c(
|
||
"S16_a",
|
||
"S16_b",
|
||
"S16_c",
|
||
"S18", "S19_a", "S19_b", "S19_c", "S20_a", "S20_b", "S20_c", "S20_d",
|
||
"BK1",
|
||
"C2A",
|
||
"ppgender",
|
||
"race_5cat",
|
||
"ED0",
|
||
"ED1",
|
||
"pppa_lgb",
|
||
"ppp20197",
|
||
"I40",
|
||
"B2",
|
||
"I41_b",
|
||
"FL0",
|
||
"B10",
|
||
"ppage",
|
||
"ppcmdate",
|
||
"ind1",
|
||
"ppcm0160",
|
||
"ppcm1301",
|
||
"ppmsacat",
|
||
"ppfs0596",
|
||
"A1_a",
|
||
"BK2_a",
|
||
"BK2_b",
|
||
"BK2_c",
|
||
"BK2_d",
|
||
"BK2_e",
|
||
"BNPL1",
|
||
"ppfs1482",
|
||
"GE2A",
|
||
"GE1A",
|
||
"E7",
|
||
"E8_b",
|
||
"xlaptop",
|
||
"devicetype2",
|
||
"S21"
|
||
)
|
||
|
||
for (pooled.var in pooled.vars) {
|
||
|
||
# if (pooled.var == "S19_b") {stop()}
|
||
|
||
SHED.panel[, paste0(pooled.var, ".pooled")] <- NA
|
||
|
||
valid.var.col.name <- intersect(colnames(SHED.panel), paste0(pooled.var, ".", 2021:2023))[1]
|
||
|
||
var.transform <- ifelse(is.factor(SHED.panel[, valid.var.col.name]), as.character, identity)
|
||
|
||
for (i in as.character(2021:2023)) {
|
||
|
||
if ( ! (paste0(pooled.var, ".", i) %in% colnames(SHED.panel) ) ) {
|
||
next
|
||
}
|
||
|
||
SHED.panel[is.na(SHED.panel[, paste0(pooled.var, ".pooled")]), paste0(pooled.var, ".pooled")] <-
|
||
var.transform(SHED.panel[is.na(SHED.panel[, paste0(pooled.var, ".pooled")]), paste0(pooled.var, ".", i)])
|
||
}
|
||
|
||
if (is.factor(SHED.panel[, valid.var.col.name])) {
|
||
SHED.panel[, paste0(pooled.var, ".pooled")] <- factor(SHED.panel[, paste0(pooled.var, ".pooled")])
|
||
}
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
SHED.panel$panel_weight.common <- apply(
|
||
SHED.panel[, c("panel_weight.2021", "panel_weight.2022", "panel_weight.2023")], MARGIN = 1,
|
||
FUN = function(x) {
|
||
y <- unique(na.omit(x))
|
||
if (length(y) == 0) { return(0) }
|
||
return(mean(y))
|
||
})
|
||
|
||
SHED.panel$panel_weight.common[SHED.panel$panel_weight.common == 0 & !is.na(SHED.panel$weight.2021)] <-
|
||
SHED.panel$weight.2021[SHED.panel$panel_weight.common == 0 & !is.na(SHED.panel$weight.2021)]
|
||
|
||
SHED.panel$panel_weight.common[SHED.panel$panel_weight.common == 0 & !is.na(SHED.panel$weight.2022)] <-
|
||
SHED.panel$weight.2022[SHED.panel$panel_weight.common == 0 & !is.na(SHED.panel$weight.2022)]
|
||
|
||
SHED.panel$panel_weight.common[SHED.panel$panel_weight.common == 0 & !is.na(SHED.panel$weight.2023)] <-
|
||
SHED.panel$weight.2023[SHED.panel$panel_weight.common == 0 & !is.na(SHED.panel$weight.2023)]
|
||
# Weighting is a little improvised
|
||
|
||
|
||
|
||
|
||
|
||
# S16_a
|
||
# Bought cryptocurrency or held as an
|
||
# investment - In the past year, have you done
|
||
# the following with cryptocurrency, such as
|
||
# Bitcoin or Ethereum?
|
||
SHED.panel$crypto.used.as.investment <- SHED.panel$S16_a.pooled == "Yes"
|
||
|
||
|
||
# S16_b
|
||
# In the past year, have you done the following
|
||
# with cryptocurrency, such as Bitcoin or Ethereum?
|
||
# - Used to buy something or make a payment
|
||
SHED.panel$crypto.used.as.payment <- SHED.panel$S16_b.pooled == "Yes"
|
||
|
||
# S16_c
|
||
# Used cryptocurrency to send money to friends
|
||
# or family - In the past year, have you done
|
||
# the following with cryptocurrency, such as
|
||
# Bitcoin or Ethereum?
|
||
SHED.panel$crypto.used.to.send.money <- SHED.panel$S16_c.pooled == "Yes"
|
||
|
||
# S18
|
||
# Were any of the family or friends you sent
|
||
# cryptocurrency to living outside of the
|
||
# United States?
|
||
SHED.panel$crypto.used.to.send.money.outside.us <- SHED.panel$S18.pooled == "Yes"
|
||
|
||
# S19_a
|
||
# Buy something in-person - Have you used
|
||
# cryptocurrency to do each of the following?
|
||
SHED.panel$crypto.used.as.payment.in.person <- SHED.panel$S19_a.pooled == "Yes"
|
||
|
||
|
||
# S19_b
|
||
# Buy something online - Have you used
|
||
# cryptocurrency to do each of the following?
|
||
SHED.panel$crypto.used.as.payment.online <- SHED.panel$S19_b.pooled == "Yes"
|
||
|
||
# S19_c
|
||
# Pay a bill online - Have you used
|
||
# cryptocurrency to do each of the following?
|
||
SHED.panel$crypto.used.as.payment.online.bill.pay <- SHED.panel$S19_c.pooled == "Yes"
|
||
|
||
|
||
# S20_a
|
||
# Convert cash into cryptocurrency - Have you
|
||
# used a cryptocurrency ATM/kiosk to do each of
|
||
# the following?
|
||
SHED.panel$crypto.atm.convert.cash.to.crypto <- SHED.panel$S20_a.pooled == "Yes"
|
||
|
||
# S20_b
|
||
# Withdraw cash - Have you used a cryptocurrency
|
||
# ATM/kiosk to do each of the following?
|
||
SHED.panel$crypto.atm.withdraw.cash <- SHED.panel$S20_b.pooled == "Yes"
|
||
|
||
# S20_c
|
||
# Make a payment - Have you used a
|
||
# cryptocurrency ATM/kiosk to do each of the
|
||
# following?
|
||
SHED.panel$crypto.atm.make.payment <- SHED.panel$S20_c.pooled == "Yes"
|
||
|
||
# S20_d
|
||
# Send money to family or friends - Have you
|
||
# used a cryptocurrency ATM/kiosk to do each of
|
||
# the following?
|
||
SHED.panel$crypto.atm.send.money <- SHED.panel$S20_d.pooled == "Yes"
|
||
|
||
|
||
|
||
|
||
|
||
# BK1
|
||
# Do you and/or your spouse or partner
|
||
# currently have a checking, savings or money
|
||
# market account?
|
||
SHED.panel$lacks.bank.account <- SHED.panel$BK1.pooled == "No"
|
||
|
||
# C2A
|
||
# Do you currently have at least one credit card?
|
||
SHED.panel$lacks.credit.card <- SHED.panel$C2A.pooled == "No"
|
||
|
||
# ppgender
|
||
# Gender [Ipsos source]
|
||
SHED.panel$is.male <- SHED.panel$ppgender.pooled == "Male"
|
||
|
||
# race_5cat Race 5 categories
|
||
SHED.panel$race <- SHED.panel$race_5cat.pooled
|
||
|
||
# ED0
|
||
# What is the highest level of school you have
|
||
# completed or the highest degree you have
|
||
# received?
|
||
SHED.panel$education.level <- relevel(SHED.panel$ED0.pooled, "High school degree or GED")
|
||
|
||
# ED1
|
||
# Which one of the following broad categories
|
||
# best describes your (current/most recent)
|
||
# educational program?
|
||
SHED.panel$education.subject <- relevel(SHED.panel$ED1.pooled, "Business/management")
|
||
|
||
# pppa_lgb [Ipsos source]
|
||
# Q230: Which of the following best describes how you think of yourself?
|
||
SHED.panel$lgbtq <- relevel(SHED.panel$pppa_lgb.pooled, "Straight, that is, not gay")
|
||
|
||
# ppp20197 [Ipsos source]
|
||
# QEG22: Are you a citizen of the United States?
|
||
SHED.panel$is.noncitizen <- SHED.panel$ppp20197.pooled == "No"
|
||
|
||
# I40
|
||
# Which of the following categories best
|
||
# describes the total income that you and/or
|
||
# your spouse or partner received from all
|
||
# sources, before taxes and deductions, in the
|
||
# past 12 months?
|
||
SHED.panel$income.category <- SHED.panel$I40.pooled
|
||
|
||
# B2
|
||
# Overall, which one of the following best
|
||
# describes how well you are managing
|
||
# financially these days?
|
||
SHED.panel$overall.financial.wellbeing <- SHED.panel$B2.pooled
|
||
|
||
# I41_b
|
||
# Supplemental Nutrition Assistance Program
|
||
# (SNAP or food stamps) - In the past 12
|
||
# months, have you received any of the
|
||
# following?
|
||
SHED.panel$received.food.stamps <- SHED.panel$I41_b.pooled
|
||
|
||
# FL0
|
||
# On a scale from zero to ten, where zero is
|
||
# not at all willing to take risks and ten is
|
||
# very willing to take risks, what number would
|
||
# you be on the scale?
|
||
|
||
SHED.panel$risk.tolerance <- as.numeric(SHED.panel$FL0.pooled) - 1
|
||
|
||
# B10
|
||
# Overall, on a scale from zero to ten, where
|
||
# zero is not at all satisfied and ten is
|
||
# completely satisfied, how satisfied are you
|
||
# with life as a whole these days?
|
||
SHED.panel$life.satisfaction <- as.numeric(SHED.panel$B10.pooled) - 1
|
||
|
||
# ppage
|
||
# Age [Ipsos source]
|
||
# ppcmdate
|
||
# Date member completed Core survey
|
||
# Must correct age variable for time of initial Ipsos survey
|
||
SHED.panel$age <- SHED.panel$ppage.pooled + (2021 - as.numeric(substr(SHED.panel$ppcmdate.pooled, 1, 4)))
|
||
|
||
# ind1
|
||
# IND1: Industry (tight scale) in current or main job
|
||
SHED.panel$job.industry <- relevel(SHED.panel$ind1.pooled, "Retail/Stores/Shopping (including Online Retail)")
|
||
|
||
# ppcm0160 [Ipsos source]
|
||
# Q26: Occupation (detailed) in current or main job
|
||
SHED.panel$job.occupation <- relevel(SHED.panel$ppcm0160.pooled, "Food Preparation and Serving")
|
||
|
||
# ppcm1301 [Ipsos source]
|
||
# GOVEMP1: Employer type
|
||
SHED.panel$employer.type <- relevel(SHED.panel$ppcm1301.pooled, "Private-for-profit company")
|
||
|
||
# ppmsacat
|
||
# MSA Status [Ipsos source]
|
||
SHED.panel$resides.in.metro.statistical.area <- SHED.panel$ppmsacat.pooled == "Metro"
|
||
|
||
# ppfs0596 [Ipsos source]
|
||
# Q22: What is the approximate total amount of
|
||
# your household's savings and investments?
|
||
SHED.panel$total.household.savings <- relevel(SHED.panel$ppfs0596.pooled, "$100,000 - $249,999")
|
||
|
||
# A1_a
|
||
# In the past 12 months, has each of the following happened to you:
|
||
# - Turned down for credit
|
||
SHED.panel$rejected.for.credit <- SHED.panel$A1_a.pooled == "Yes"
|
||
|
||
# BK2_a
|
||
# In the past 12 months, did you and/or spouse or partner:
|
||
# - Purchase a money order from a place other than a bank
|
||
SHED.panel$purchase.non.bank.money.order <- SHED.panel$BK2_a.pooled == "Yes"
|
||
|
||
# BK2_b
|
||
# In the past 12 months, did you and/or spouse or partner:
|
||
# - Cash a check at a place other than a bank
|
||
SHED.panel$cash.check.non.bank <- SHED.panel$BK2_b.pooled == "Yes"
|
||
|
||
# BK2_c
|
||
# In the past 12 months, did you and/or spouse or partner:
|
||
# - Take out a payday loan or payday advance
|
||
SHED.panel$take.payday.loan <- SHED.panel$BK2_c.pooled == "Yes"
|
||
|
||
# BK2_d
|
||
# In the past 12 months, did you and/or spouse or partner:
|
||
# - Take out a pawn shop loan or an auto title loan
|
||
SHED.panel$take.auto.or.pawn.shop.loan <- SHED.panel$BK2_d.pooled == "Yes"
|
||
|
||
# BK2_e
|
||
# In the past 12 months, did you and/or spouse or partner:
|
||
# - Obtain a tax refund advance to receive your refund faster
|
||
SHED.panel$take.tax.refund.advance <- SHED.panel$BK2_e.pooled == "Yes"
|
||
|
||
# BNPL1
|
||
# In the past year, have you used a “Buy Now
|
||
# Pay Later” service to buy something?
|
||
SHED.panel$used.buy.now.pay.later <- SHED.panel$BNPL1.pooled == "Yes"
|
||
|
||
# ppfs1482 [Ipsos source]
|
||
# Q108: Where do you think your credit score falls
|
||
SHED.panel$perceived.credit.score <- factor(SHED.panel$ppfs1482.pooled, levels = c("Fair", "Excellent", "Good", "Poor", "Very poor", "Don’t know"))
|
||
# Note "Don’t know" has a curved apostrophe ’
|
||
|
||
# GE2A
|
||
# Some people earn money by selling items at
|
||
# places like flea markets and garage sales or
|
||
# through online marketplaces like eBay or
|
||
# Etsy. In the past month, have you made money
|
||
# by selling items in any of these ways?
|
||
|
||
SHED.panel$informal.selling.of.goods <- SHED.panel$GE2A.pooled == "Yes"
|
||
|
||
# GE1A
|
||
# In the past month, have you done any
|
||
# freelance or gig-work, either to supplement
|
||
# your income or as your main job?
|
||
|
||
SHED.panel$freelance.or.gig.work <- SHED.panel$GE1A.pooled == "Yes"
|
||
|
||
# E7
|
||
# During the past 12 months, have you
|
||
# personally experienced discrimination or
|
||
# unfair treatment because of your race,
|
||
# ethnicity, age, religion, disability status,
|
||
# sexual orientation, gender, or gender
|
||
# identity?
|
||
SHED.panel$experienced.discrimination <- SHED.panel$E7.pooled == "Yes"
|
||
|
||
# E8_b
|
||
# In the past 12 months, did you personally experience
|
||
# discrimination or unfair treatment while
|
||
# doing any of the following?
|
||
# - Banking or applying for a loan
|
||
SHED.panel$experienced.discrimination.in.banking <- SHED.panel$E8_b.pooled == "Yes"
|
||
|
||
# xlaptop
|
||
# Is R a KP laptop user?
|
||
SHED.panel$is.kp.laptop.user <- SHED.panel$xlaptop.pooled == "Yes"
|
||
|
||
# devicetype2
|
||
# DOV: Device Type - at the end of survey
|
||
SHED.panel$respondent.device.type <- relevel(SHED.panel$devicetype2.pooled, "WinPC")
|
||
|
||
# S21
|
||
# What was the main reason you used
|
||
# cryptocurrency to buy something, make a
|
||
# payment, or send money?
|
||
SHED.panel$why.used.crypto.as.payment <- SHED.panel$S21.pooled
|
||
|
||
|
||
|
||
SHED.panel.survey <- svydesign(ids = ~0, data = SHED.panel, weights = SHED.panel$panel_weight.common)
|
||
SHED.survey <- SHED.panel.survey
|
||
|
||
|
||
saveRDS(SHED.survey, file = "processed-data/SHED.rds")
|
||
|
||
|
||
|
||
|
||
|