Как я могу определить, соответствует ли мой вектор значениям переменных в r? - PullRequest
1 голос
/ 08 апреля 2020

Я новичок в р. У меня проблемы с пониманием, если мой код точен. По сути, я назначил фиктивную переменную 'edu.degree.level' существующей переменной во фрейме данных. Исходная переменная имела x9 возможных значений, которым теперь присваивается 1 или 0. Однако, когда я запускаю dpput (), я вижу, что в векторе есть переменная x10 для переменной, когда я ожидаю 9, основанное на 9, являющееся числом целые числа для исходной переменной.

Вот мой вывод:

dput(head(df1,10))
structure(list(edu.degree.level = c(1L, 0L, 1L, 1L, 0L, 1L, 1L, 
1L, 1L, 0L), immig.view = structure(c(7, 4, 5, 1, 7, 5, 7, 1, 
3, 1), label = "J1 Do you think immigration is good or bad for 
Britain's economy?", labels = c(`Not stated` = -999, `Don`t know` = -1, `1 Bad for economy`
= 1, `2` = 2, `3` = 3,`4` = 4, `5` = 5, `6` = 6, `7 Good for economy` = 7), class = "haven_labelled")), row.names
= c(NA,10L), class = "data.frame")

Метки переменной отображаются как:

Labels:
value              label
-999         Not stated
-1         Don`t know
 1  1 Bad for economy
 2                  2
 3                  3
 4                  4
 5                  5
 6                  6
 7 7 Good for economy

1 Ответ

0 голосов
/ 08 апреля 2020

Значения меток и их имена являются соответственно метками и уровнями того, что R называет "factor".

a <- attr(df1$immig.view, "labels")
df1$immig.view.2 <- factor(df1$immig.view, labels = names(a), levels = unname(a))

Следующая функция может автоматизировать эту процедуру. Столбец immig.view будет изменен на месте, без тестового столбца immig.view.2.

labels2factor <- function(x){
  a <- attr(x, "labels")
  x <- factor(x, labels = names(a), levels = a)
  x
}

df1$immig.view <- labels2factor(df1$immig.view)

df1
#   edu.degree.level         immig.view
#1                 1 7 Good for economy
#2                 0                  4
#3                 1                  5
#4                 1  1 Bad for economy
#5                 0 7 Good for economy
#6                 1                  5
#7                 1 7 Good for economy
#8                 1  1 Bad for economy
#9                 1                  3
#10                0  1 Bad for economy
...