r-创建一个函数,将每一行的数据帧X与每一行数据帧Y进行比较.然后将数据帧Y中的值添加到X



我有两个数据帧(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))

相关内容

最新更新