Я смотрю совокупный набор данных Американского национального опроса по выборам , найденный здесь У них есть только файлы .ascii, .dta и .sav для скачивания. Я решил скачать файл .dta. Я импортировал его в свой рабочий каталог с помощью пакета загрузчика, а затем разархивировал файл.
downloader::download(url =
"https://electionstudies.org/anes_timeseries_cdf_dta/",
"anes_timeseries_cdf_data.zip", mode = "wb")
unzip(zipfile = "anes_timeseries_cdf_data.zip",
files = c("anes_timeseries_cdf.dta", "anes_timeseries_codebook.pdf"),
list = FALSE,
unzip = getOption("unzip"))
Затем, используя пакет readstata13, я импортировал файл .dta во фрейм данных.
read_anes_cdf <- read.dta13("anes_timeseries_cdf.dta",
convert.factors = TRUE,
generate.factors = TRUE,
nonint.factors = TRUE)
Я действительно играл с этой функцией, пока не смог запустить ее с минимальными предупреждениями. Сейчас я пытаюсь привести данные в работоспособную форму. Выбор и переименование переменных было простым (я продемонстрирую код только с одной переменной):
var_anes_cdf <- read_anes_cdf %>%
select(c("VCF0104")) %>%
rename('respond_gender' = 'VCF0104')
Однако кадр данных включает в себя как кодированную переменную, так и описание в каждом наблюдении (т. Е. Response_gender имеет значения «1. Male», «2. Female» и «0. NA; нет Pre IW»). Поэтому я попытался отделить закодированные переменные от их описаний с помощью функцииручные ()
var_anes_cdf %>%
separate("respond_gender", into = c("respond_gender", "descrip"), sep = ".")
В нем выводились переменные, которые я выбрал на последнем шаге, но оба параметра response_gender и новая переменная "descrip" были пустыми. Он также вернул: «Предупреждающее сообщение: ожидается 2 штуки. Дополнительные штуки выброшены в 59933 рядах [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 , 17, 18, 19, 20, ...]. "
Мне очень трудно работать с этими данными. Является ли .dta лучшим типом файлов для меня, или я должен выбрать файлы .ascii или .sav вместо этого? Как я могу исправить проблемы, возникающие у меня с процессом уборки?