我的数据集看起来像这样建立虚拟变量与许多条件(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学校表示出勤表示班次)
我试图创建一个虚拟变量,如果一个人在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岁。任何想法可能会出错?
%in%命令似乎有些奇怪的事情发生。幸运的是,这很容易替换为其他逻辑,如下所示。 DF%>% 熔体(ID = “DOB”)%>% tbl_df()%>% 突变(虚设= ifelse(值 - DOB <21值 - DOB> 18,1,0)) –
这完美的作品,再次感谢安德鲁 – Milhouse
高兴地帮助,很高兴它的工作。 –