我的数据集看起来像这样
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 表示学校成绩)
我正在尝试创建一个虚拟变量,如果一个人在 19/20 岁时上学,则该变量 = 1。例如,如果 YOB = 1988 且 ATT98 = 1 则新变量 = 1 等等。我一直在尝试在 dplyr 中使用 mutate 但我是 R 新手(通常是编码!)所以除了错误之外很难得到任何东西我写的任何代码。
任何帮助将不胜感激,谢谢。
编辑:
所以,我刚刚注意到出了点问题,我稍微更改了您的代码,只是为了在长格式数据表中添加另一列。这是我最后所做的:
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 岁。有什么想法可能会出错吗?