Как создать набор фиктивных переменных из данного ответа в R? - PullRequest
0 голосов
/ 23 марта 2020

Я действительно балуюсь этой проблемой. У меня есть набор данных:

example = data.frame(age = c(34,19,44,22,34,12,54,63,23),
                       wash.hands = c("Before eating","Before eating, on public transportation","Before eating, After eating",
                                      "After eating","on public transportation, when I get home","Before eating",
                                      "When I get home","When I get home, Before eating","on public transportation"),
                     stringsAsFactors = F
                       )

Это выглядит так:

# age                                wash.hands
#  34                             Before eating
#  19   Before eating, on public transportation
#  44               Before eating, After eating
#  22                              After eating
#  34 on public transportation, when I get home
#  12                             Before eating
#  54                           When I get home
#  63            When I get home, Before eating
#  23                  on public transportation

Он содержит возраст респондента и когда он sh его руки. Я хотел бы иметь набор из 4 фиктивных переменных (перед едой, после еды, на публике c на транспорте, когда я вернусь домой) и иметь их подпись "1", если респондент моет руки по конкретному случаю c и 0 в противном случае. как я это сделал??? любая помощь будет оценена! Спасибо! :)

Ответы [ 3 ]

0 голосов
/ 23 марта 2020

можно использовать psych или fastDummies

library(psych)
dummy.code(example$wash.hands)

library(fastDummies)
dummy_cols(example$wash.hands)
0 голосов
/ 23 марта 2020

Вот базовый подход R.

times <- c("Before eating","on public transportation","After eating","When I get home")
result <- lapply(times,function(x){as.numeric(grepl(x,example$wash.hands))})
names(result) <- times
cbind(example,do.call(cbind,result))
  age                                wash.hands Before eating on public transportation After eating When I get home
1  34                             Before eating             1                        0            0               0
2  19   Before eating, on public transportation             1                        1            0               0
3  44               Before eating, After eating             1                        0            1               0
4  22                              After eating             0                        0            1               0
5  34 on public transportation, when I get home             0                        1            0               0
6  12                             Before eating             1                        0            0               0
7  54                           When I get home             0                        0            0               1
8  63            When I get home, Before eating             1                        0            0               1
9  23                  on public transportation             0                        1            0               0
0 голосов
/ 23 марта 2020

Я бы использовал str_detect(), чтобы указать, находится ли конкретный набор строк в переменной или нет.

library(tidyverse)

mutate(example,
  before_eating = str_detect(wash.hands, "Before eating"),
  after_eating = str_detect(wash.hands, "After eating"),
  public_trans = str_detect(wash.hands, "public transportation"),
  get_home = str_detect(wash.hands, "get home"))

Это вернет 4 логические переменные, а R обрабатывает TRUE как 1 и FALSE как 0, так что это должно работать с любым анализом, который вы хотите сделать с этим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...