我想要做的是從三個不同的數據集創建一個單一的白內障變量,詢問有關白內障。 (基本上,電話採訪,使用簡短問卷的浪潮以及使用較長問卷的浪潮)。這些數據集已合併,因此缺少爲他們未參與的wave參與者的值創建的值我已經將三個獨立的白內障變量中的每一個編碼爲1 =是和0 =否。在下面的代碼中,我想說如果你對三個變量中的任何一個做出回答(1),然後給出1的值,那麼如果你是一個沒有(0)的任何給出一個值爲0,否則爲「NA」。如何將三個變量的值組合成一個變量?
survey$cataract<-ifelse(survey$ew3_cat==1 | survey$lq3_catnum==1 | survey$sq3_cat==1,1,
ifelse(survey$ew3_cat==0 | survey$lq3_catnum==0 | survey$sq3_cat==0,0,NA))
從以下結果可以看出,我得到了1,但其他一切都是「NA」,沒有零。
> table(survey$cataract,useNA="ifany")
1 <NA>
10303 63322
現在,如果我改變順序,比如先做所有的零,然後我得到正確的0,但沒有1。
survey$cataract<-ifelse(survey$ew3_cat==0 | survey$lq3_catnum==0 | survey$sq3_cat==0,0,
ifelse(survey$ew3_cat==1 | survey$lq3_catnum==1 | survey$sq3_cat==1,1,NA))
> table(survey$cataract,useNA="ifany")
0 <NA>
63315 10310
從三個獨立的增值經銷商正確的計數應該是:
10,303 = 1
63,315 = 0
7= NA
我也試圖與編造數據複製此問題,如下:
x <- c(rep(1,100),rep(0,200),rep(NA,400))
y <- c(rep(NA,300),rep(1,100),rep(0,100),rep(NA,200))
z <- c(rep(NA,500),rep(1,100),rep(0,100))
cat <- ifelse(x==1|y==1|z==1,1,
ifelse(x==0|y==0|z==0,0,NA))
> table(cat,useNA="ifany")
cat
1 <NA>
300 400
如果我同樣的問題顛倒順序:
cat <- ifelse(x==0|y==0|z==0,0,
ifelse(x==1|y==1|z==1,1,NA))
> table(cat,useNA="ifany")
cat
0 <NA>
400 300
關於我在這裏失蹤的邏輯事物的任何建議?
我認爲你需要澄清你的'貓'標準。如果我正確地理解了你,你寫出如果x,y,z的_any_爲0,那麼你想將'cat'設置爲零。同時你寫道,如果x,y,z的_any_是1,那麼你想設置'cat'爲1。因此,例如,如果x = 0,y = 1,z = NA,則滿足cat = 0和cat = 1的標準。 – Henrik
是的,抱歉,缺乏清晰度。所以,三個單獨的變量向不同的人提出相同的問題。因此,最終的數據集被附加在一起。第一次調查的變量,第二次和第三次調查中的人員缺少值。第二次調查的變量將缺少第一次和第三次調查的值,依此類推。當然,所有變量都有NA的可能性也就是說,當一個人沒有在他們的浪潮中回答問題時。 – user3314465