r - 创建一个函数,将 dataframeX 的每一行与 dataframeY 的每一行进行比较。然后将数据框 Y 的值添加到 X
问题描述
我有两个数据框(x 和 Y)。我需要将 X 中的每一行与 Y 中的每一行进行比较,如果满足两个逻辑,则从 Y 中的列中获取值并将其放在 X 的列中(对于该特定行)。数据框 X 看起来像:
目标是针对 Y 的每一行测试 X 的每一行,如果 X$Long == Y$Longitude & X$Lat==YLattidude 对于一行,则将 Y$Site 的值分配给满足条件的行X$sink 用于正在测试的特定行。
我希望这在一个带有输入 x 和 y 的函数中。我已经尝试了一些代码,但它没有填写值。
这是我一直在做的事情的一个例子。
**Connectivity_Matrix_function<- function(X,Y){
X$Sink <- c("NA")
for (z in 1:nrow(X)) {
for (i in 1:nrow(Y)) {
if(X[z, 4] == Y[i,2] & X[z,5] == Y[i,3]) { X[z, 11] <- Y[i, 1] }
}
}
}**
解决方案
建议使用的解决方案dplyr
:
library(dplyr)
x %>%
left_join(y, by=c("Long"="Longitude", "Lat"="Latitude")) %>%
mutate(Sink = coalesce(Site, Sink))