将一个数据帧的 NA 值强加到格式相同的第二个数据帧上

Bea*_*ant 1 merge r dataframe na

我有两个数据帧,格式相同,其中 DF1 中的 NA 值应施加到 DF2 上,而 DF2 中的所有其他值保持不变。

下面的示例,使用代码来重现两个 DF 和下面所需的结果 DF:

在此输入图像描述

structure(list(ID = c(100, 101, 102, 103), c1 = c(NA, NA, NA, 
"Y"), c2 = c("Y", NA, NA, "Y"), c3 = c("Y", "Y", "Y", NA), c4 = c(NA, 
NA, NA, NA), c5 = c(NA, NA, NA, NA)), class = "data.frame", row.names = c(NA, 
-4L))

structure(list(ID = c(100, 101, 102, 103), c1 = c(0, 0, 0, NA
), c2 = c(1, 0, 0, 0), c3 = c(0, 0, 0, 1), c4 = c(0, 0, NA, 0
), c5 = c(1, 0, NA, 0)), class = "data.frame", row.names = c(NA, 
-4L))

structure(list(ID = c(100, 101, 102, 103), c1 = c(NA, NA, NA, 
NA), c2 = c(1, NA, NA, 0), c3 = c(0, 0, 0, NA), c4 = c(NA, NA, 
NA, NA), c5 = c(NA, NA, NA, NA)), class = "data.frame", row.names = c(NA, 
-4L))
Run Code Online (Sandbox Code Playgroud)

akr*_*run 5

只需做一个作业(如果尺寸相同)

DF3 <- DF2
DF3[is.na(DF1)] <- NA
Run Code Online (Sandbox Code Playgroud)

-输出

> DF3
   ID c1 c2 c3 c4 c5
1 100 NA  1  0 NA NA
2 101 NA NA  0 NA NA
3 102 NA NA  0 NA NA
4 103 NA  0 NA NA NA
Run Code Online (Sandbox Code Playgroud)