R 如何使用所有行检查特定数据帧并找出差异?

R 如何使用所有行检查特定数据帧并找出差异?,r,R,使用如下数据帧: df1 <- data.frame(id = c(1,2,3,4), num = c(23,42,12,33)) df2 <- data.frame(id = c(1,3,4,2,5), num = c(23,12,33,0,2)) df1带有setdifffromdplyr library(dplyr) setdiff(df1, df2) setdiff(df2, df1) 使用dplyr library(dplyr) setdiff(df1, df2) s

使用如下数据帧:

df1 <- data.frame(id = c(1,2,3,4), num = c(23,42,12,33))
df2 <- data.frame(id = c(1,3,4,2,5), num = c(23,12,33,0,2))

df1带有
setdiff
from
dplyr

library(dplyr)
setdiff(df1, df2)
setdiff(df2, df1)

使用
dplyr

library(dplyr)
setdiff(df1, df2)
setdiff(df2, df1)
库(dplyr)
df1%>%
反连接(df2)
df2%>%
反连接(df1)
返回

>df1%>%
+反连接(df2)
连接,通过=c(“id”,“num”)
id编号
1  2  42


下面是使用
子集
+
合并

> subset(merge(df1, cbind(df2, f = TRUE), all.x = TRUE), is.na(f), select = -f)
  id num
2  2  42

> subset(merge(df2, cbind(df1, f = TRUE), all.x = TRUE), is.na(f), select = -f)
  id num
2  2   0
5  5   2

或者,我们可以在%
+
粘贴中使用
%

> df1[!do.call(paste, df1) %in% do.call(paste, df2), ]
  id num
2  2  42

> df2[!do.call(paste, df2) %in% do.call(paste, df1), ]
  id num
4  2   0
5  5   2
> df1[!do.call(paste, df1) %in% do.call(paste, df2), ]
  id num
2  2  42

> df2[!do.call(paste, df2) %in% do.call(paste, df1), ]
  id num
4  2   0
5  5   2