我的數據集看起來像這樣建立虛擬變量與許多條件(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
高興地幫助,很高興它的工作。 –