将数据集与R中的csv文件中的数据匹配

时间:2018-08-09 14:56:04

标签: r dataframe dplyr data.table

假设我有数据

mydat=structure(list(id = 1:6, x2 = c(12L, 12L, 12L, 12L, 12L, 12L), 
    x3 = c(12L, 12L, 12L, 12L, 12L, 12L)), .Names = c("id", "x2", 
"x3"), class = "data.frame", row.names = c(NA, -6L))

我也有csv文件

test=read.csv(path,sep=";", dec",")

它具有这种结构

test=structure(list(id = 1:5, x2 = c(12L, 12L, 12L, 12L, 12L), x3 = c(12L, 
12L, 12L, 12L, 12L)), .Names = c("id", "x2", "x3"), class = "data.frame", row.names = c(NA, 
-5L))

我该如何匹配这两个数据集,以致从mydat中删除 与test具有相似ID的观察结果?

I.E。输出必须是

id  x2  x3
6   12  12

id 1,2,3,4,5中的mydattest数据集相似。

2 个答案:

答案 0 :(得分:1)

您可以使用dplyr中的anti_join

 dplyr::anti_join(mydat,test)
Joining, by = c("id", "x2", "x3")
  id x2 x3
1  6 12 12

在基数R中:您可以将数据折叠成字符串并进行比较:

mydat[!do.call(paste,mydat)%in%do.call(paste,test),]
  id x2 x3
6  6 12 12

答案 1 :(得分:1)

使用R base。

> mydat[setdiff(mydat$id, test$id), ]
  id x2 x3
6  6 12 12