合并两个具有非唯一键的数据框
Merge two data frames with non-unique keys
如果第一列的值存在于 data2 中,我想 selectdata1 的行:
data1<-data.table(a=c(1,2,3,1),b=c(1,4,6,3))
data2<-data.table(a=c(1,3,1,5,6))
Desired output:
a b
1 1
3 6
1 3
合并不起作用,因为键不是唯一的,还有其他想法吗?
我们可以在每个数据集中为 'a' 列和 'join' 创建一个序列列 ('ind'),然后将键列设置为 'a' 和 'ind'
data1[, ind:=1:.N, a]
data2[, ind:= 1:.N, a]
setkey(data1, a, ind)[data2, nomatch=0][, ind:=NULL]
# a b
#1: 1 1
#2: 3 6
#3: 1 3
这是一种没有连接的方法:
> unique(data1[a %in% data2[,a],])
a b
1: 1 1
2: 3 6
3: 1 3
如果第一列的值存在于 data2 中,我想 selectdata1 的行:
data1<-data.table(a=c(1,2,3,1),b=c(1,4,6,3))
data2<-data.table(a=c(1,3,1,5,6))
Desired output:
a b
1 1
3 6
1 3
合并不起作用,因为键不是唯一的,还有其他想法吗?
我们可以在每个数据集中为 'a' 列和 'join' 创建一个序列列 ('ind'),然后将键列设置为 'a' 和 'ind'
data1[, ind:=1:.N, a]
data2[, ind:= 1:.N, a]
setkey(data1, a, ind)[data2, nomatch=0][, ind:=NULL]
# a b
#1: 1 1
#2: 3 6
#3: 1 3
这是一种没有连接的方法:
> unique(data1[a %in% data2[,a],])
a b
1: 1 1
2: 3 6
3: 1 3