簡體   English   中英

在R中具有多個匹配條件的數據幀子集

[英]Subset a data frame with multiple match conditions in R

與樣本數據

> df1 <- data.frame(x=c(1,1,2,3), y=c("a","b","a","b"))
> df1
  x y
1 1 a
2 1 b
3 2 a
4 3 b
> df2 <- data.frame(x=c(1,3), y=c("a","b"))
> df2
  x y
1 1 a
2 3 b

我想從df1中刪除df2的所有值對(x,y)。 我可以在df2中的每一行上使用for循環來做到這一點,但是我敢肯定有一種我現在無法想到的更好,更簡單的方法。 我一直在嘗試從以下內容開始:

> df1$x %in% df2$x & df1$y %in% df2$y
[1]  TRUE  TRUE FALSE  TRUE

但這不是我想要的,因為df1 [2,] =(1,b)被拉出以進行刪除。 預先非常感謝您的幫助。

從df2構建一組對:

prs <- with(df2, paste(x,y,sep="."))

使用類似的過程對df1中的每一行測試對成員資格:

df1[ paste(df1$x, df1$y, sep=".") %in% prs , ]

您可以采取另一種方法: rbind所有並刪除重復項

out <-rbind(df1,df2)
out[!duplicated(out, fromLast=TRUE) & !duplicated(out),]

  x y
2 1 b
3 2 a

暫無
暫無

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

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