例如,我有一个数据框 -
ad
key value
ab 1
bc 2
cd 3
ad1
key QS IS LISR Group version
ab 7 23 77 2 1.2
bc 7 30 70 1 1.5
cd 8 40 60 2 1.4
de 6 12 88 3 1.7
ef 3 23 77 4 1.2
fg 2 34 66 2 1.4
结果应为 -
result
key QS IS LISR Group version
ab 7 23 77 2 1.2
bc 7 30 70 1 1.5
cd 8 40 60 2 1.4
我找到了一些示例,但这些示例适用于小型数据帧,我的两个数据帧都很大!
尝试编写查询但没有成功?你怎么解决这个问题?
谢谢!
答案 0 :(得分:3)
我们可以使用%in%
和subset
根据两个数据集中的“关键”列对“ad1”中的行进行子集化。
subset(ad1, key %in% ad$key)
# key QS IS LISR Group version
#1 ab 7 23 77 2 1.2
#2 bc 7 30 70 1 1.5
#3 cd 8 40 60 2 1.4
或其他选项join
来自data.table
。在devel版本中,我们可以使用on
。我们将'data.frame'转换为'data.table'(setDT(ad1)
)并加入'ad'数据集。
library(data.table)#v1.9.5+
setDT(ad1)[ad['key'], on='key']
# key QS IS LISR Group version
#1: ab 7 23 77 2 1.2
#2: bc 7 30 70 1 1.5
#3: cd 8 40 60 2 1.4
答案 1 :(得分:1)
这也有效:
ad1[which(ad1$key %in% ad$key),]