减去两个数据帧

时间:2013-06-05 06:40:52

标签: r dataframe

假设我有两个数据帧(DF1和DF2)并且都包含(x,y)坐标。我想提取DF1中的(x,y)对而不是DF2。例如:

DF1<-data.frame(x=1:3,y=4:6,t=10:12)
DF2<-data.frame(x=3:5,y=6:8,s=1:3)

我想要

DF_new<-data.frame(x=1:2,y=4:5,t=10:11). 

我应该为更大的数据集做些什么?谢谢!

3 个答案:

答案 0 :(得分:4)

似乎在这里使用merge是一个很好的候选人:

merge(DF1,DF2)
  x y  t s
1 3 6 12 1

答案 1 :(得分:3)

对于非常大的数据集,您可能会对data.table

感兴趣
library(data.table)
DF1<-data.frame(x=1:3,y=4:6,t=10:12)
DF2<-data.frame(x=3:5,y=6:8,s=1:3)
library(data.table)
DF1 <- data.table(DF1, key = c("x", "y"))
DF2 <- data.table(DF2, key = c("x", "y"))
DF1[complete.cases(DF1[DF2])] # maybe you want this?
DF2[DF1]
DF1[!DF2] # or maybe you want this?
DF2[!DF1]

答案 2 :(得分:1)

library(tidyverse)
DF1<-data.frame(x=1:3,y=4:6,t=10:12)
DF2<-data.frame(x=3:5,y=6:8,s=1:3)

anti_join(DF1, DF2)
#> Joining, by = c("x", "y")
#>   x y  t
#> 1 1 4 10
#> 2 2 5 11