我想用df2替换df1的NA(两个数据框都很大,大约有155列x 3966行)两个数据框都有第一列'ID',其他列名重叠。下面是示例的一部分:
> df1
ID col1 col2 ...... col154
1 AMM115 C A ...... A+
2 ADM107 NA NA ...... B
3 AGM041 B C ...... C+
4 AGM132 A NA ...... A+
5 AQM007 NA A ...... B+
6 ARM028 NA B+ ...... A-
7 ASM019 A A+ ...... NA
> df2
ID col1 col2 ...... col154
1 ADM107 A+ B ...... B
2 AGM041 C A ...... B+
3 ARM028 A+ B+ ...... NA
4 AQM007 B+ A ...... B+
我尝试这个答案在这里:Can I replace NAs when joining two data frames with dplyr?我知道合并可能是我需要的。它可以从第一个向量填充NA,但我怎么能跨越所有列。但我不知道如何变异和合并多列像我的真实的数据期待第一列。也选择后缀。x或。y在此代码。
library(dplyr)
df1 %>%
left_join(df2, by = "fruit") %>%
mutate(var2 = coalesce(var2.x, var2.y)) %>%
select(-var2.x, -var2.y)
我想得到像df3,如果df1和df2的NA有值,用df2替换df1的NA,如果没有,保持df1的原始值。
> df3
ID col1 col2 ...... col154
1 AMM115 C A ...... A+
2 ADM107 A+ B ...... B
3 AGM041 B C ...... C+
4 AGM132 A NA ...... A+
5 AQM007 B+ A ...... B+
6 ARM028 A+ B+ ...... A-
7 ASM019 A A+ ...... NA
1条答案
按热度按时间wpx232ag1#
您可以: