作者paranoia5201 (社会黑暗、行路难)
看板R_Language
标题[问题] 用0取代NA,但不要每一栏
时间Tue Apr 23 17:31:41 2019
我的原始资料长相如下:
> 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://webptt.com/cn.aspx?n=bbs/R_Language/M.1556011903.A.47E.html
2F:→ paranoia5201: cool耶!是我要的没错,可是我完全看不懂其中逻辑… 04/23 22:21
3F:→ andrew43: dcast()以name为列,以referrer1为栏扩展开来求length 04/23 22:44
4F:→ andrew43: 因此,有出现记为1没出现记为0。 04/23 22:44