假设我有两个dataframe,如下所示:
V1 V2 V3
A A1 A11
A A1 NA
B B2 NA
B NA NA
NA NA NA
geo value
A 5
A1 3
A11 1
B 6
B2 7
B21 9
我想将第二个 Dataframe 的“值”合并到第一个 Dataframe 中,尽可能地以最好的geo值合并。所以,对于第一行,我想基于列V3合并,因为它有一个值。然而,第二行只有V2,所以我想基于V2合并,而不是基于列V3合并。所需的输出如下:
V1 V2 V3 Value
A A1 A11 1
A A1 NA 3
B B2 NA 7
B NA NA 6
NA NA NA NA
我可以执行多个合并,但这最终会创建多个冗余的“Value.x”,“Value.y”等列。是否有一种方法可以基于第一个匹配列进行合并,然后在前一个(更精细)列中有NA值的情况下继续进行下一个匹配列?
2条答案
按热度按时间osh3o9ms1#
dplyr
的coalesce
函数的工作方式与SQL中的相同,从可能值列表中输出第一个非NA值,我们可以根据偏好指定。我们可以基于此进行连接。结果
x0fgdtte2#
你可以在Base R中这样做:
它根据
pmax
的返回进行一些匹配