提取第一个data.frame中的行,在第二个data.frame中找不到某些值

Gab*_*ble 2 r dataframe

我试图从第一个数据帧中消除某个值在第二个数据帧中的所有行.

使用R编程语言进行统计数据分析.

这是我在这里发布的第一个问题,如果你愿意,请耐心等待;)

我使用机密数据,所以我用一个例子重新创建了问题.

Name=c("Bussieres", "Nelson")
Fname=c("Paul", "Robert")
Tel=c(123,234)
comp1=data.frame(Name, Fname, Tel)

Name=c("Bussieres","Bussieres","Nelson","Nelson")
Fname=c("Robert","Paul","Paul","Paula")
Tel=c(123,234,345,456)
comp2=data.frame(Name, Fname, Tel)
Run Code Online (Sandbox Code Playgroud)

comp1返回:

   Name Fname Tel
1 Bussieres   Paul 123
2    Nelson Robert 234
Run Code Online (Sandbox Code Playgroud)

comp2返回:

   Name Fname Tel
1 Bussieres Robert 123
2 Bussieres   Paul 234
3    Nelson   Paul 345
4    Nelson  Paula 456
Run Code Online (Sandbox Code Playgroud)

现在,我想要的是返回comp2的行,其中"Name"和"Fname"在comp2中不相同.

要存储在新数据帧comp3中的预期回报将是(在此处进行轻微编辑,发布错误的预期结果):

   Name Fname Tel
1    Nelson Robert 234
Run Code Online (Sandbox Code Playgroud)

我的第一次尝试是使用匹配功能,但这不是很有效.

以下在for循环中的尝试也不起作用.

for (i in comp1[,"Name"]){for (j in comp3[,"Name"]){if i!=j return comp3=x1["Name"==i,]}}
Run Code Online (Sandbox Code Playgroud)

我很惊讶我在R中找不到基本(原始)函数来执行此操作,因为从数据集中排除某些观察结果将是一个非常常规的过程.

Aru*_*run 6

一个data.table解决方案:

require(data.table)
dt1 <- data.table(comp1, key=c("Name", "Fname"))
dt2 <- data.table(comp2, key=c("Name", "Fname"))
dt1[!dt2]

#      Name  Fname Tel
# 1: Nelson Robert 234
Run Code Online (Sandbox Code Playgroud)