本文介绍了合并 r 中的两个 df 替换缺失值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想在 R 中匹配两个相似的数据帧.两个 dfs 都有部分相同的变量和一个键 (id),其中包含缺失值:
I want to match two similar dataframes in R. Both dfs have partially the same variables and a key (id), which contain missing values:
library(tidyverse)
df1 <- as_tibble(list(id = seq(1:6),
v1 = c(1, 0, NA, 1, 0, NA),
v2 = c(NA, NA, 0, 0, 1, NA),
v3 = c(1, 0 , 1, 1, 1, NA)))
df1
# A tibble: 6 x 4
id v1 v2 v3
<int> <dbl> <dbl> <dbl>
1 1 1 NA 1
2 2 0 NA 0
3 3 NA 0 1
4 4 1 0 1
5 5 0 1 1
6 6 NA NA NA
df2 <- as_tibble(list(id = seq(1:6),
v1 = c(1, NA, 0, 1, 0, 1),
v2 = c(1, 0, 0, NA, 1, 1),
v4 = c(0, 1, 0, NA, NA, NA)))
df2
# A tibble: 6 x 4
id v1 v2 v4
<int> <dbl> <dbl> <dbl>
1 1 1 1 0
2 2 NA 0 1
3 3 0 0 0
4 4 1 NA NA
5 5 0 1 NA
6 6 1 1 NA
我想将它们合并成一个如下所示的 df:
I'd like to merge those into one df that looks like this:
id v1 v2 v3 v4
<int> <dbl> <dbl> <dbl> <dbl>
1 1 1 1 1 0
2 2 0 0 0 1
3 3 0 0 1 0
4 4 1 0 1 NA
5 5 0 1 1 NA
6 6 1 1 NA NA
到目前为止,我已经尝试了 dplyr 的各种连接,但不知何故我没有得到它.
So far I've tried all kind of joins from dplyr, but somehow I am not getting it.
推荐答案
比我的第一个更好的答案:
Better answer, comparing to my first one:
bind_rows(df1, df2) %>%
group_by(id) %>%
summarise_all(~ coalesce(.[1], .[2]))
## A tibble: 6 x 5
# id v1 v2 v3 v4
# <int> <dbl> <dbl> <dbl> <dbl>
# 1 1 1 1 1 0
# 2 2 0 0 0 1
# 3 3 0 0 1 0
# 4 4 1 0 1 NA
# 5 5 0 1 1 NA
# 6 6 1 1 NA NA
这篇关于合并 r 中的两个 df 替换缺失值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!