R anti_join 只保留一个数据帧中的行
R anti_join keep only rows from one dataframe
df1 = data.frame(Id = c(1:6), Product = c(rep("Toaster", 3), rep("Radio", 3)), Test = NA)
df2 = data.frame(Id = c(2, 4, 6, 7), State = c(rep("Alabama", 2), rep("Ohio", 2)))
df_sum <- anti_join(df1,df2, by = "Id") %>% bind_rows(df2)
有没有一种简单的方法可以生成 anti_join 的结果,以便结果中只出现 df1 的行。因此,例如,Id 为 7 的行被丢弃在生成的数据框中。我只能想到费力的解决方案。提前致谢。
结果 table 应该如下所示:
在您想要的输出中,两个数据集中的所有行和列都被保留。
这就是为什么我想 full_join
可能会对您有所帮助。
full_join return all rows and all columns from both x and y. Where
there are not matching values, returns NA for the one missing.
library(tidyverse)
new_df <- df1 %>% full_join(df2)
anti_join
函数仅保留 df1
中与 df2
.
中的行不相交的那些行
这是你期望的奇怪结果,但我不知道你的计划是什么,所以这行代码会给你正是你想要的table:
anti_join(df1,df2, by = "Id") %>% bind_rows(df2) %>% filter(Id %in% df1$Id)
我刚刚添加了一个过滤器,以便仅保留 Id
存在的信息 df1
。
我们只join
:
library(dplyr)
x <- df1 %>%
anti_join(df2, by = "Id")
y <- df2 %>%
semi_join(df1, by = "Id")
x %>%
full_join(y, by="Id")
Id Product Test State
1 1 Toaster NA <NA>
2 3 Toaster NA <NA>
3 5 Radio NA <NA>
4 2 <NA> NA Alabama
5 4 <NA> NA Alabama
6 6 <NA> NA Ohio
df1 = data.frame(Id = c(1:6), Product = c(rep("Toaster", 3), rep("Radio", 3)), Test = NA)
df2 = data.frame(Id = c(2, 4, 6, 7), State = c(rep("Alabama", 2), rep("Ohio", 2)))
df_sum <- anti_join(df1,df2, by = "Id") %>% bind_rows(df2)
有没有一种简单的方法可以生成 anti_join 的结果,以便结果中只出现 df1 的行。因此,例如,Id 为 7 的行被丢弃在生成的数据框中。我只能想到费力的解决方案。提前致谢。
结果 table 应该如下所示:
在您想要的输出中,两个数据集中的所有行和列都被保留。
这就是为什么我想 full_join
可能会对您有所帮助。
full_join return all rows and all columns from both x and y. Where there are not matching values, returns NA for the one missing.
library(tidyverse)
new_df <- df1 %>% full_join(df2)
anti_join
函数仅保留 df1
中与 df2
.
这是你期望的奇怪结果,但我不知道你的计划是什么,所以这行代码会给你正是你想要的table:
anti_join(df1,df2, by = "Id") %>% bind_rows(df2) %>% filter(Id %in% df1$Id)
我刚刚添加了一个过滤器,以便仅保留 Id
存在的信息 df1
。
我们只join
:
library(dplyr)
x <- df1 %>%
anti_join(df2, by = "Id")
y <- df2 %>%
semi_join(df1, by = "Id")
x %>%
full_join(y, by="Id")
Id Product Test State
1 1 Toaster NA <NA>
2 3 Toaster NA <NA>
3 5 Radio NA <NA>
4 2 <NA> NA Alabama
5 4 <NA> NA Alabama
6 6 <NA> NA Ohio