Как работать с помеченными данными из SPSS в R
Это решение, которое я нашел для работы с помеченными данными из SPSS в R.
Я работаю с опросом в SPSS и переехал из foreign
в haven
,
Я прочитал Удобный способ доступа к метке переменных после импорта данных Stata с помощью гавани, и я не смог найти способ выразить свои помеченные переменные как факторы.
Я пытался извлечь attributes
с помощью purrr
пакет, а затем преобразовать некоторые переменные в фактор. Нет успеха!
Как работать с помеченными данными из SPSS в R
1: читать данные
library(dplyr)
library(haven)
library(purrr)
library(sjlabelled)
url = "http://users.dcc.uchile.cl/~mvargas/auxiliares_cc5208/nesi_individuals_with_grants_2015_spss.zip"
zip = paste0(getwd(),"/nesi_individuals_with_grants_2015_spss.zip")
sav = paste0(getwd(),"/nesi_individuals_with_grants_2015.sav")
download.file(url, zip, method="curl")
system(paste0("7z e ",zip," -oc:",getwd()))
nesi_individuals_with_grants = tbl_df(read_sav(sav))
# as expected the variables have no levels
# B14 is a variable that refers to where do people work (e.g. 1= startup, 2= bank, 3 = hospital, etc)
levels(nesi_individuals_with_grants$B14)
2. Создайте таблицу, чтобы узнать, что означают цифры (метки):
classifications_all = tbl_df(nesi_individuals_with_grants) %>%
select(OCUP_REF,SEXO,CISE,CINE,B1,B14,C1) %>%
rename(occupation_id = OCUP_REF, sex_id = SEXO, icse_id = CISE, isced_id = CINE,
isco_id = B1, journey_id = C1)
occupation = classifications_all %>%
select(occupation_id) %>%
mutate(occupation = get_label(occupation_id)) %>%
distinct()
Что возвращает
# A tibble: 3 x 2
occupation_id occupation
<dbl+lbl> <chr>
1 1 Binario Ocupados de Referencia Tabulados de Personas
2 NaN Binario Ocupados de Referencia Tabulados de Personas
3 0 Binario Ocupados de Referencia Tabulados de Personas
Какая переменная метка, то я пытаюсь
occupation = classifications_all %>%
select(occupation_id) %>%
distinct() %>%
filter(!is.nan(occupation_id)) %>%
mutate(occupation = get_labels(occupation_id))
Оно работает!
> occupation
# A tibble: 2 x 2
occupation_id occupation
<dbl+lbl> <chr>
1 1 Ocupados con menos de 1 mes en el empleo actual
2 0 Ocupados con más de 1 mes en el empleo actual
1 ответ
Решение
Вы хотите установить метки значений как уровни факторов? Тогда вы можете попробовать sjlabelled::as_label()
или же sjmisc::to_label()
(которые оба одинаковы, просто я не полностью удалил to_label из sjmisc, но сохранил его для обратной совместимости).