[問題] 用0取代NA,但不要每一欄

看板R_Language作者 (社會黑暗、行路難)時間6年前 (2019/04/23 17:31), 編輯推噓1(104)
留言5則, 3人參與, 6年前最新討論串1/1
我的原始資料長相如下: > check18.1 %>% + select(name, referrer1) %>% + head() name referrer1 <chr> <chr> 1 温○珠 王○芸 2 大○食品 陳○如 3 尤○女 <NA> 4 尤○玉 <NA> 5 王○仁 王○芸 6 王○修 <NA> 透過下列方式,轉為如下模樣: > check18.2 <- + check18.1 %>% + select(name, referrer1) %>% + filter(!is.na(referrer1)) %>% + spread(referrer1, referrer1) > head(check18.2) name  王○芸 陳○如 1 温○珠  王○芸 <NA> 2 大○食品 <NA> 陳○如 3 尤○女  <NA> <NA> 4 尤○玉  王○芸 <NA> 5 王○仁  <NA> <NA> 6 王○修  <NA> <NA> 我期待把資料重新編碼後變成這樣: name  王○芸 陳○如 1 温○珠   1 0 2 大○食品 0 1 3 尤○女   0 0 4 尤○玉   1 0 5 王○仁   0 0 6 王○修   0 0 【我的作法】 先把<NA>都先變成0 > check18.2[is.na(check18.2)] <- 0 name  王○芸 陳○如 1 温○珠  王○芸 0 2 大○食品 0 陳○如 3 尤○女  0 0 4 尤○玉   王○芸 0 5 王○仁  0 0 6 王○修  0 0 再把文字內容改成1,結果...... > check18.2[check18.2 != 0] <- 1 name  王○芸 陳○如 1 1   1 0 2 1 0 1 3 1   0 0 4 1   1 0 5 1 0 0 6 1   0 0 欄位name裡面的資料也都被取代為1了,這不是我想要的結果! 如果逐欄訂正是可以(check18.2$王○芸[check18.2$王○芸 == '王○芸'] -> 1) 但是資料展開的欄位其實有20多項,故想要在此尋求簡單快速的方法。 煩請指教,感謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.194.164.43 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1556011903.A.47E.html

04/23 22:02, 6年前 , 1F
04/23 22:02, 1F

04/23 22:21, 6年前 , 2F
cool耶!是我要的沒錯,可是我完全看不懂其中邏輯…
04/23 22:21, 2F

04/23 22:44, 6年前 , 3F
dcast()以name為列,以referrer1為欄擴展開來求length
04/23 22:44, 3F

04/23 22:44, 6年前 , 4F
因此,有出現記為1沒出現記為0。
04/23 22:44, 4F

04/24 16:46, 6年前 , 5F
https://ideone.com/PbhLYv dplyr的做法,供參考
04/24 16:46, 5F
文章代碼(AID): #1Sljj_H- (R_Language)
文章代碼(AID): #1Sljj_H- (R_Language)