我有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新手!
答案 0 :(得分:3)
我们创建一个逻辑矩阵,然后根据索引将值分配给1
i1 <- (df2 == 1 & !is.na(df2)) & (df1 == 0 & !is.na(df1))
df1[i1] <- 1