如何在r中执行iferror vlookup
我已经用iferror和vlookup(如下所述)在excel中创建了一个公式。您能告诉我如何在R中复制相同的公式吗 此查找转到main_df,它与名为E&F的各个列相匹配 所以条件是E列上的vlookup和sheet1,如果是错误,那么F列上的vlookup和sheet2,如果是错误,那么E列上的vlookup和sheet3,基本上每次我得到一个NA,它应该只取那些值,然后进行下一个vlookup如何在r中执行iferror vlookup,r,R,我已经用iferror和vlookup(如下所述)在excel中创建了一个公式。您能告诉我如何在R中复制相同的公式吗 此查找转到main_df,它与名为E&F的各个列相匹配 所以条件是E列上的vlookup和sheet1,如果是错误,那么F列上的vlookup和sheet2,如果是错误,那么E列上的vlookup和sheet3,基本上每次我得到一个NA,它应该只取那些值,然后进行下一个vlookup IFERROR(IFERROR(VLOOKUP($E2,'sheet1'!$K:$L,2,0),
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
期望输出最终值
main_df
Countries City Population
USA Texas 1000000
India Mumbai 118947759
China Hunan 239857688
Veitnam Hue 667588
我假设您有两个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)
}
MyMerge请提供可复制的示例和预期输出。您自己已经尝试过了吗?Excel公式没有任何意义。我引用了Excel公式来说明。我已经解释了我要查找的内容。我要查找的输出是所有NA都应该具有匹配的值,根据查找完成的情况。假设df有国家名称,其余3张表1、表2、表3有人口。不同的表有不同的国家名称和人口数。因此,期望的输出将是V查找并获得主要df中的所有国家人口。希望提供解释。sheet1、sheet2、sheet3是3个不同的数据帧?问题是合并来自不同的df,而不是一个…因此提到df_sheet1、df_sheet2和df_sheet3,主df只有一些解决方法,但同样需要从主df中查找多个列(合并df)但该函数提供了仅从df“国家”中的一列合并的选项,并假设我在要映射的主df中也有“地区”。
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