【发布时间】:2018-07-13 15:09:46
【问题描述】:
我有一个名为 df 的大型数据框,带有一些 ID。
我有另一个数据框 (id_list),其中包含一组匹配的 ID 及其与每个 ID 相关的特征。 ID 在两个数据帧中不是按顺序排列的。
实际上,我想从较大的数据帧df 查找id_list,并将Display 和Type 两列添加到当前数据帧df。
有许多令人困惑的例子。什么可能是最有效的方法。我尝试使用 match() , %in% 并且失败了。
这是一个可重现的例子。
df <- data.frame(Feats = matrix(rnorm(20), nrow = 20, ncol = 5), ID = sample.int(10, 10))
id_list <- data.frame(ID = sample.int(10,10),
Display = sample(c('clear', 'blur'), 20, replace = TRUE),
Type = sample(c('red', 'green', 'blue', 'indigo', 'yellow'), 20, replace = TRUE))
Feats.1 Feats.2 Feats.3 Feats.4 Feats.5 ID
1 3.14944573 -0.52285062 3.14944573 -0.52285062 3.14944573 2
2 -0.41096007 0.38256691 -0.41096007 0.38256691 -0.41096007 1
3 0.03629351 -0.02514005 0.03629351 -0.02514005 0.03629351 7
4 0.91257290 1.35590761 0.91257290 1.35590761 0.91257290 5
5 -0.26927311 -2.10213773 -0.26927311 -2.10213773 -0.26927311 3
6 3.14944573 -0.52285062 3.14944573 -0.52285062 3.14944573 4
7 -0.41096007 0.38256691 -0.41096007 0.38256691 -0.41096007 10
8 0.03629351 -0.02514005 0.03629351 -0.02514005 0.03629351 6
9 0.91257290 1.35590761 0.91257290 1.35590761 0.91257290 8
10 -0.26927311 -2.10213773 -0.26927311 -2.10213773 -0.26927311 9
ID Display Type
1 6 clear indigo
2 1 blur blue
3 7 clear red
4 4 clear red
5 3 blur red
6 10 clear yellow
7 2 clear blue
8 8 blur green
9 5 clear blue
10 9 clear green
生成的结束 df 的大小应为 [20 x 8]。
【问题讨论】:
-
您正在寻找基础 R 中的
merge或dplyr包中的left_join -
这会解释什么是联接(问题和答案不包含任何 SQL,所以不要被标题吓倒):stackoverflow.com/questions/11739324/…
标签: r lookup data-manipulation