假设我有两个数据帧(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).
我应该为更大的数据集做些什么?谢谢!
答案 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