我有两个数据帧df1和df2 . 它们具有相同的(两列)列 . 我想从df2中删除df1中的行 .
你可以用几个包来做到这一点 . 但是这里是如何用基础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
请注意 df1 和 df2 与Lapointe相同,但在另一方面,因为你想从df2中删除df2中的行,所以setdiff从 x 中删除了包含在 x 中的元素 . 见 ?setdiff
df1
df2
x
?setdiff
你会得到与Lapointe相同的结果
2 回答
你可以用几个包来做到这一点 . 但是这里是如何用基础R做的 .
试试这个:
请注意
df1
和df2
与Lapointe相同,但在另一方面,因为你想从df2中删除df2中的行,所以setdiff从x
中删除了包含在x
中的元素 . 见?setdiff
你会得到与Lapointe相同的结果