我怎样才能让两个表互相填充 NA?
How can I make two tables fill each others NAs?
我遇到了两个数据框的一个小问题。基本上,两者都包含值和 NA,并且具有完全相同的格式(列、名称等),每个 table 长 292 行。
一个中的 NA 对应于另一个中的值,反之亦然,例如从顶部开始的前三行 table 是底部 table 中的 NA,而底部 table 中的第 4 行和第 5 行是顶部 table 中的 NA。
我正在寻找一种方法来合并这两个 table 以最小化 NA 的数量,即从顶部 table 和第 4 行开始第 1、2 和 3 行从底部 table 等等。 (我知道第 2 行在两者中都是 NA;最终结果仍然会有 NA,只是少了很多)。有人可以帮我吗?
P.S。我已经尝试了我从 base R 和 dplyr 包中知道的所有连接 and/or 合并函数。
提前致谢。
> 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
在 Base-r
中。此代码使用 complete.cases
从两个数据帧中获取没有 NA 的行,并将它们与 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
我遇到了两个数据框的一个小问题。基本上,两者都包含值和 NA,并且具有完全相同的格式(列、名称等),每个 table 长 292 行。
一个中的 NA 对应于另一个中的值,反之亦然,例如从顶部开始的前三行 table 是底部 table 中的 NA,而底部 table 中的第 4 行和第 5 行是顶部 table 中的 NA。
我正在寻找一种方法来合并这两个 table 以最小化 NA 的数量,即从顶部 table 和第 4 行开始第 1、2 和 3 行从底部 table 等等。 (我知道第 2 行在两者中都是 NA;最终结果仍然会有 NA,只是少了很多)。有人可以帮我吗?
P.S。我已经尝试了我从 base R 和 dplyr 包中知道的所有连接 and/or 合并函数。
提前致谢。
> 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
在 Base-r
中。此代码使用 complete.cases
从两个数据帧中获取没有 NA 的行,并将它们与 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