mirror of
https://github.com/Rucknium/misc-research.git
synced 2025-01-04 17:49:22 +00:00
414 lines
13 KiB
R
414 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")
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|