1

我遇到了两个数据框的一个小问题。基本上,两者都包含值和 NA,并且具有完全相同的格式(列、名称等),每个表都是 292 行长。

一个中的 NA 对应于另一个中的值,反之亦然,例如,顶部表格中的前三行是底部表格中的 NA,而底部表格中的第 4 行和第 5 行是顶部表格中的 NA。

我正在寻找一种合并这两个表的方法,以最小化 NA 的数量,即从顶部表中获取第 1、2 和 3 行,从底部表中获取第 4 行,依此类推。(我知道第 2 行在两者中都是 NA;最终结果仍然会有 NA,只是少了很多)。有人可以帮帮我吗?

PS 我已经尝试了我从基础 R 和 dplyr 包中知道的所有加入和/或合并功能。

提前致谢。

   > head(extracted1)
     sex feet inches in_inches  in_cm
1   Male    6      0        72 182.88
2   Male   NA     NA        NA     NA
3 Female    5      3        63 160.02
4 Female   NA     NA        NA     NA
5   Male   NA     NA        NA     NA
6   Male    6      0        72 182.88

head(extracted2)
     sex feet   inches in_inches in_cm
1   Male   NA       NA        NA    NA
2   Male   NA       NA        NA    NA
3 Female   NA       NA        NA    NA
4 Female    5 4.960630  64.96063   165
5   Male   16 9.181102 201.18110   511
6   Male   NA       NA        NA    NA
4

1 回答 1

0

Base-r. 此代码从两个数据帧中获取没有 NA 的行,complete.cases并将它们绑定在一起rbind

rbind(extracted1[complete.cases(extracted1),],extracted2[complete.cases(extracted2),])


     sex feet   inches in_inches  in_cm
1   Male    6 0.000000  72.00000 182.88
3 Female    5 3.000000  63.00000 160.02
6   Male    6 0.000000  72.00000 182.88
4 Female    5 4.960630  64.96063 165.00
5   Male   16 9.181102 201.18110 511.00

编辑:

如果你想保持相同的结构,extracted1你也可以在Base-R

toreplace <- extracted2[complete.cases(extracted2),]
extracted1[as.numeric(row.names(toreplace)),] <- toreplace

     sex feet   inches in_inches  in_cm
1   Male    6 0.000000  72.00000 182.88
2   Male   NA       NA        NA     NA
3 Female    5 3.000000  63.00000 160.02
4 Female    5 4.960630  64.96063 165.00
5   Male   16 9.181102 201.18110 511.00
6   Male    6 0.000000  72.00000 182.88
于 2020-05-11T11:34:42.380 回答