簡體   English   中英

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

[英]Extract rows in first data.frame for which certain values are not found in second data.frame

我試圖從第一個數據幀中消除在第二個數據幀中具有特定值的所有行。

使用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)

comp1返回:

   Name Fname Tel
1 Bussieres   Paul 123
2    Nelson Robert 234

comp2返回:

   Name Fname Tel
1 Bussieres Robert 123
2 Bussieres   Paul 234
3    Nelson   Paul 345
4    Nelson  Paula 456

現在,我要返回的是comp1中comp2中“名稱”和“ Fname”不相同的行。

將存儲在新數據框comp3中的預期收益為( 此處進行了少量編輯,並發布了錯誤的預期結果 ):

   Name Fname Tel
1    Nelson Robert 234

我的初次嘗試是使用match函數,但效果並不理想。

下面的for循環嘗試也沒有用。

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

我很驚訝我無法在R中找到基本的(原始)函數來執行此操作,因為從數據集中排除某些觀察值是非常常規的過程。

數據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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM