簡體   English   中英

R:從一個數據框中刪除另一個數據框中的行

[英]R: remove rows from one data frame that are in another

我有兩個數據框 df1 和 df2。 它們具有相同的(兩)列。 我想從 df1 中刪除 df2 中的行。

你可以用幾個包來做到這一點。 但這里是如何使用基礎 R 做到這一點。

df1 <-matrix(1:6,ncol=2,byrow=TRUE)
df2 <-matrix(1:10,ncol=2,byrow=TRUE)
all <-rbind(df1,df2) #rbind the columns
#use !duplicated fromLast = FALSE and fromLast = TRUE to get unique rows.
all[!duplicated(all,fromLast = FALSE)&!duplicated(all,fromLast = TRUE),] 

     [,1] [,2]
[1,]    7    8
[2,]    9   10

試試這個:

df2 <-matrix(1:6,ncol=2,byrow=TRUE)
df1 <-matrix(1:10,ncol=2,byrow=TRUE)

data.frame(v1=setdiff(df1[,1], df2[,1]), v2=setdiff(df1[,2], df2[,2]))
  v1 v2
1  7  8
2  9 10

請注意, df1df2與 Lapointe 的相同,但反過來,因為您想從 df1 中刪除 df2 中的行,因此 setdiff 從x中刪除包含在y中的元素。 參見?setdiff

你會得到與 Lapointe 相同的結果

考慮到您有一個在兩個數據幀之間匹配的變量 (var_match),我得到了一個簡單的方法:

df_1_minus_2 <- df_1[which(!df_1$var_match %in% df_2$var_match),]

暫無
暫無

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

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