当R中df2中有1时,替换df1中的0

时间:2018-11-29 18:52:44

标签: r dataframe

我有2个具有相同列数和行数的数据框。 df1填充为0和NA,而df2填充为1和NA。只要df2中有1,我希望它也可以通过替换df1中相同位置的0出现在df1中。实际的数据帧有大约5000列和85行,因此我正在寻找一种可以轻松地在整个过程中运行的解决方案。

df1看起来像这样:

       1    2   3   4   5   6   7   8   9   10    
stat1  NA   NA  NA  NA  NA  NA  NA  0   0   0
stat2  0    0   0   0   0   0   0   0   0   0
stat3  0    0   0   0   0   0   NA  NA  NA  NA
stat4  NA   NA  NA  NA  NA  NA  NA  NA  NA  NA
stat5  NA   NA  NA  0   0   0   0   0   0   0
stat6  NA   NA  0   0   0   0   0   0   NA  NA
stat7  0    0   0   0   0   0   0   0   0   0
stat8  NA   NA  NA  NA  NA  NA  NA  NA  NA  NA
stat9  NA   NA  NA  NA  NA  NA  NA  NA  NA  NA
stat10 NA   NA  NA  NA  NA  0   0   0   0   0

df2看起来像这样:

       1    2   3   4   5   6   7   8   9   10    
stat1  NA   NA  NA  NA  NA  NA  NA  NA  NA  1
stat2  1    NA  NA  NA  NA  NA  NA  NA  NA  NA
stat3  NA   NA  NA  1   NA  NA  NA  NA  NA  NA
stat4  NA   NA  NA  NA  NA  NA  NA  NA  NA  NA
stat5  NA   NA  NA  NA  NA  NA  NA  NA  NA  NA
stat6  NA   NA  NA  NA  1   NA  NA  NA  NA  NA
stat7  1    NA  NA  NA  NA  NA  NA  NA  NA  NA
stat8  NA   NA  NA  NA  NA  NA  NA  NA  NA  NA
stat9  NA   NA  NA  NA  NA  NA  NA  NA  NA  NA
stat10 NA   NA  NA  NA  NA  NA  NA  NA  NA  NA

重申一下,在df1中有0,而在df2中有NA,我想保留0。 df1和df2中都存在NA的地方,我想保留NA。在df1中有0,在df2中有1的地方,我想保留1。

我将非常感谢R用户,因为我是R新手!

1 个答案:

答案 0 :(得分:3)

我们创建一个逻辑矩阵,然后根据索引将值分配给1

i1 <- (df2 == 1 & !is.na(df2)) & (df1 == 0 & !is.na(df1))
df1[i1] <- 1