首页 文章

R:从一个数据框中删除另一个数据框中的行

提问于
浏览
9

我有两个数据帧df1和df2 . 它们具有相同的(两列)列 . 我想从df2中删除df1中的行 .

2 回答

  • 8

    你可以用几个包来做到这一点 . 但是这里是如何用基础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
    
  • 3

    试试这个:

    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相同,但在另一方面,因为你想从df2中删除df2中的行,所以setdiff从 x 中删除了包含在 x 中的元素 . 见 ?setdiff

    你会得到与Lapointe相同的结果

相关问题