识别 R 中 2 个数据帧的唯一值
identify unique values of 2 data frames in R
我正在处理 2 个数据框。我想要一个输出出现在数据框 1 中但不出现在数据框 2 中的行的文件。这是示例数据:
df1:
id visit
094-1 2
094-2 3
0813-1 11
0813-3 22
df2:
id visit
094-1 2
094-2 3
0819-2 8
这就是我想要的:
df3:
id visit
0819-2 8
我试过了,但没用。有人可以帮忙吗?
library(tidyverse)
df1 %in% df2 -> x
df2[!x,]-> df3
在 dplyr 中,有一个函数 setdiff
用于此:
df1 = data.frame(id=c("094-1","094-2","0813-1","0813-3"),visit=c(2,3,11,22))
df2 = data.frame(id=c("094-1","094-2","0819-2"),visit=c(2,3,8))
dplyr::setdiff(df2,df1)
id visit
1 0819-2 8
或者:
library(dplyr)
setdiff(df2,df1)
使用data.table
library(data.table)
fsetdiff(setDT(df2), setDT(df1))
# id visit
#1: 0819-2 8
base r
解决方案使用与问题中包含的代码类似的方法。此解决方案使用 %in%
运算符,但在与 !
运算符结合使用时将其反转。
数据:
df1 <- data.frame(
id = c("094-1", "094-2", "0813-1", "0813-3"),
visit = c(2,3,11,22)
)
df2 <- data.frame(
id = c("094-1", "094-2", "0819-2"),
visit = c(2,3, 8)
)
代码:
df3 <- df2[!df2$id %in% df1$id,]
输出:
df3
#> id visit
#> 3 0819-2 8
由 reprex package (v0.3.0)
于 2020-11-29 创建
我正在处理 2 个数据框。我想要一个输出出现在数据框 1 中但不出现在数据框 2 中的行的文件。这是示例数据:
df1:
id visit
094-1 2
094-2 3
0813-1 11
0813-3 22
df2:
id visit
094-1 2
094-2 3
0819-2 8
这就是我想要的:
df3:
id visit
0819-2 8
我试过了,但没用。有人可以帮忙吗?
library(tidyverse)
df1 %in% df2 -> x
df2[!x,]-> df3
在 dplyr 中,有一个函数 setdiff
用于此:
df1 = data.frame(id=c("094-1","094-2","0813-1","0813-3"),visit=c(2,3,11,22))
df2 = data.frame(id=c("094-1","094-2","0819-2"),visit=c(2,3,8))
dplyr::setdiff(df2,df1)
id visit
1 0819-2 8
或者:
library(dplyr)
setdiff(df2,df1)
使用data.table
library(data.table)
fsetdiff(setDT(df2), setDT(df1))
# id visit
#1: 0819-2 8
base r
解决方案使用与问题中包含的代码类似的方法。此解决方案使用 %in%
运算符,但在与 !
运算符结合使用时将其反转。
数据:
df1 <- data.frame(
id = c("094-1", "094-2", "0813-1", "0813-3"),
visit = c(2,3,11,22)
)
df2 <- data.frame(
id = c("094-1", "094-2", "0819-2"),
visit = c(2,3, 8)
)
代码:
df3 <- df2[!df2$id %in% df1$id,]
输出:
df3
#> id visit
#> 3 0819-2 8
由 reprex package (v0.3.0)
于 2020-11-29 创建