如何在R中合并并自动拥有0个计数而不是NA

时间:2018-02-11 00:20:57

标签: r merge

我有两个(真的:多个)向量并将它们合并在一起(真的:到非常大的df)。当我合并时,如果在一个向量中有一个实例而不是另一个向量,则它在合并的df中显示为NA:

> a=data.frame(table(letters[1:4]))
> b=data.frame(table(letters[4:10]))
> merge(a,b,by='Var1',all=1)
   Var1 Freq.x Freq.y
1     a      1     NA
2     b      1     NA
3     c      1     NA
4     d      1      1
5     e     NA      1
6     f     NA      1
7     g     NA      1
8     h     NA      1
9     i     NA      1
10    j     NA      1
> m=merge(a,b,by='Var1',all=1)

是否可以将NA的直接转换为0,而无需添加额外的代码行

> m[is.na(m)]=0
> m
   Var1 Freq.x Freq.y
1     a      1      0
2     b      1      0
3     c      1      0
4     d      1      1
5     e      0      1
6     f      0      1
7     g      0      1
8     h      0      1
9     i      0      1
10    j      0      1

原因:我的df非常大,我不想使用大量的处理能力

1 个答案:

答案 0 :(得分:0)

您的建议应该直接使用,或者至少我如何理解您的问题:

> d <- data.frame(rep(NA,10),rep(1,10),rep(NA,10))
> d
rep.NA..10. rep.1..10. rep.NA..10..1
1           NA          1            NA
2           NA          1            NA
3           NA          1            NA  
4           NA          1            NA
5           NA          1            NA
6           NA          1            NA
7           NA          1            NA
8           NA          1            NA
9           NA          1            NA
10          NA          1            NA
> d[is.na(d)] <- 0
> d
rep.NA..10. rep.1..10. rep.NA..10..1
1            0          1             0
2            0          1             0
3            0          1             0
4            0          1             0
5            0          1             0
6            0          1             0
7            0          1             0
8            0          1             0
9            0          1             0
10           0          1             0