我有两个数据帧(x和Y(。我需要将X中的每行与Y中的每一行进行比较,如果满足两个逻辑,则从Y中的一列中获取值,并将其放置在X的列中(针对特定行(。数据帧X看起来像:
数据帧
目标是测试X的每行与Y的每行,并且如果X$Long==Y$Longitude&X$Lat==YLattude为一行分配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))