我在excel中使用iferror和vlookup创建了一个公式(如下所述)。请你告诉我如何在R中复制相同的内容
此查找转到main_df,它与名为E& F
的各个列匹配因此条件是在E列上的vlookup与sheet1如果错误然后在F上与sheet2 vlookup并且如果错误然后再次在E上与sheet3 vlookup。所以基本上每次我得到NA它应该只拾取那些值并且执行下一个vlookup。
IFERROR(IFERROR(VLOOKUP($E2,'sheet1'!$K:$L,2,0),VLOOKUP($F2,'sheet2'!$A:$B,2,0)),VLOOKUP($E2,'sheet3'!$N:$O,2,0))
修改
main_df
Countries City
USA Texas
India Mumbai
China Hunan
Veitnam Hue
其他DF
df_sheet1 df_sheet2
Countries Population City Population
USA 1000000 Hunan 239857688
India 118947759 Hue 667588
所需输出final_df
main_df
Countries City Population
USA Texas 1000000
India Mumbai 118947759
China Hunan 239857688
Veitnam Hue 667588
答案 0 :(得分:1)
我假设您有两个dfs:
> data1
Countries Population
1 USA 1000000
2 India 118947759
> data2
Countries Population
1 Turkey 567748
2 UK 9857688
3 China 239857688
4 Canada 667588
> tomerge
Countries
1 USA
2 UK
3 India
4 China
5 Denmark
6 Canada
7 Turkey
运行我在SO上的问题上找到的这个功能
MyMerge <- function(x, y){
df <- merge(x, y, by= "Countries", all.x= TRUE, all.y= TRUE)
return(df)
}
然后使用Reduce
final <- Reduce(MyMerge,list(data1,data2,tomerge))
> final
Countries Population.x Population.y
1 India 118947759 NA
2 USA 1000000 NA
3 Canada NA 667588
4 China NA 239857688
5 Turkey NA 567748
6 UK NA 9857688
7 Denmark NA NA