我有两个数据框。一个是我的主数据库,另一个是数据库的一个子集
print(database)
col1 col2 x y
### ### 1 1
### ### 2 3
### ### 4 5
print(selection)
x y
1 1
2 3
我需要从“数据库”中获取在选择中反映了 x 和 y 坐标的所有行。我知道我可以使用“subset()”运算符使用选择标准从数据库中提取行,例如
subset(database, database$x == 1 & database$y == 1)
将返回我的数据库中的第一行。但是如何应用此选择运算符来搜索多个选择条件?我可以尝试的一种方法是使用如上所述的嵌套 for 循环和子集运算符,但在我看来,在 R 中使用 for 循环显然是不受欢迎的,因此必须有更好的方法来做到这一点。>
答案 0 :(得分:0)
您可以在 dplyr 中运行连接:
matches <- database %>%
inner_join(selection, by=c("x","y"))
答案 1 :(得分:0)
您在同一数据框中选择的示例应该是:
子集(数据库,x == 1 & y == 1)
但是要回答您的问题,您可以使用 merge
:
merge(database, selection, by=c("x","y") )
当“选择”数据帧中的列的名称与目标数据帧的名称不同时,也可以这样做。有关更多示例,请参阅 ?merge
。
答案 2 :(得分:0)
使用 dplyr,这可以通过以下方式实现:
res <- dplyr::inner_join(database, selection, by = c("x" = "x", "y" = "y"))
对于 R dplyr 函数中的大表,inner_join() 比 merge() 快得多。
其他优点是: