Мой набор данных выглядит что-то вроде этогоСоздание фиктивной переменной со многими условиями (R)
ID YOB ATT94 GRADE94 ATT96 GRADE96 ATT 96 .....
1 1975 1 12 0 NA
2 1985 1 3 1 5
3 1977 0 NA 0 NA
4 ......
(с ATTXX фиктивной вар. Обозначая присутствие в школе в год XX, GRADEXX обозначая классов школы)
Я пытаюсь создать фиктивную переменную, которая = 1, если человек посещает школу, когда им исполняется 19/20 лет. например если YOB = 1988 и ATT98 = 1, то новая переменная = 1 и т. д. Я пытаюсь использовать это с помощью mutate в dplyr, но я новичок в R (и кодировании вообще!), поэтому стараюсь получить что-либо кроме ошибки код пишу.
Любая помощь будет оценена, спасибо.
Edit:
Итак, я только что заметил, что что-то пошло не так, я изменил код немного просто добавить еще один столбец в таблице данных длинный формат. Вот что я сделал в конце:
df %>%
melt(id = c("ID", "DOB") %>%
tbl_df() %>%
mutate(dummy = ifelse(value - DOB %in% c(19,20), 1, 0))
так что это выглядит примерно так.
ID YOB VARIABLE VALUE dummy
1 1979 ATT94 1994 1
1 1979 ATT96 1996 1
1 1979 ATT98 0 0
2 1976 ATT94 0 0
2 1976 ATT96 1996 1
2 1976 ATT98 1998 1
т.е. когда переменное ATT принимает значение, отличное от 0 манекена = 1, даже если они не 19/20 лет. Любые идеи, что может пойти не так?
Кажется, что что-то странное происходит с командой% in%. К счастью, это легко заменить другой логикой, например, следующим. ДФ%>% расплава (ID = "DOB")%>% tbl_df()%>% мутируют (фиктивная = IfElse (значение - DOB <21 & значение - DOB> 18, 1, 0)) –
что отлично работает, спасибо снова Andrew – Milhouse
Счастлив помочь, рад, что он работает. –