我有两个数据帧(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] }
}
}
}**
答案 0 :(得分:1)
使用dplyr
的建议解决方案:
library(dplyr)
x %>%
left_join(y, by=c("Long"="Longitude", "Lat"="Latitude")) %>%
mutate(Sink = coalesce(Site, Sink))