基于行和列名的另一个DF中的一个DF中的2列中的查找值
我有一个数据框架,其中包括农业生产家庭调查的结果。数据包括每个单位代码,可以是数量,重量或区域的。我创建了一个查找表,该表具有每个作物类型和单元代码的转换。我想从查找表中查找转换因子,然后将其输入到调查数据框中。 Q14402_701 =农作物代码(153个代码,有许多不完整条目的NA值) Q14404_2_701 =作物单位代码(1:5,没有找到转换或不完整值的NA值
DF = farmHH_12_SUB:
hhid indid q14402_701 q14404_2_701
<chr> <chr> <dbl> <dbl>
1 120100181 12010018102 1101 2
2 120100191 12010018101 1102 3
3 120101761 12010176103 NA NA
4 120101771 12010176102 1101 NA
5 120101781 12010176101 1103 2
6 120102891 12010289105 NA 1
lookup = crop_code
code desc_en 1 2 3 4 NA
1 1101 Wheat NA 0.15 1 0.001 NA
2 1102 Maize NA 0.14 1 0.001 NA
3 1103 Sorghum NA 0.14 1 0.001 NA
4 1104 Rye NA NA 1 0.001 NA
5 1105 Oat NA NA 1 0.001 NA
6 1106 Millet NA NA 1 0.001 NA
我尝试了多种方法,但最有前途的基于此 link
Farmhh_12_sub$crop_conversion<-left_join(
Farmhh_12_sub%>%
mutate_if(is.double, as.character),
Crop_code%>%
mutate_if(is.factor, as.character)%>%
pivot_longer(!c(code, desc_en), names_to = "q14404_2_701", values_to = "crop_conversion")%>%
Crop_code[complete.cases(Crop_code), ],
by=c("code"="q14402_701","q14404_2_701"="q14404_2_701"))
https://stackoverflow.com/questions/51469945/doing-a-ranged-logep-with-with-with-multiple-variables-in-a-a-matrix-in-r "
hhid indid q14402_701 q14404_2_701 crop_conversion
<chr> <chr> <dbl> <dbl> <dbl>
1 120100181 12010018102 1101 2 0.15
2 120100191 12010018101 1102 3 0.001
3 120101761 12010176103 NA NA NA
4 120101771 12010176102 1101 NA NA
5 120101781 12010176101 1103 2 0.14
6 120102891 12010289105 NA 1 NA
I have one dataframe which includes the results of a household survey for agricultural production. The data includes unit codes for each, which can be volume, weight or area based. I have created a lookup table that has a conversion for each crop type and unit code. I would like to lookup the conversion factor from the lookup table and input it into the survey dataframe.
q14402_701 = crop code (153 codes, with many NA values for incomplete entries)
q14404_2_701 = crop unit code(1:5, with many NA values where no conversion is found or incomplete values
df=farmhh_12_sub:
hhid indid q14402_701 q14404_2_701
<chr> <chr> <dbl> <dbl>
1 120100181 12010018102 1101 2
2 120100191 12010018101 1102 3
3 120101761 12010176103 NA NA
4 120101771 12010176102 1101 NA
5 120101781 12010176101 1103 2
6 120102891 12010289105 NA 1
lookup=crop_code
code desc_en 1 2 3 4 NA
1 1101 Wheat NA 0.15 1 0.001 NA
2 1102 Maize NA 0.14 1 0.001 NA
3 1103 Sorghum NA 0.14 1 0.001 NA
4 1104 Rye NA NA 1 0.001 NA
5 1105 Oat NA NA 1 0.001 NA
6 1106 Millet NA NA 1 0.001 NA
I have tried a number of methodologies, but the most promising is based on this link.
Farmhh_12_sub$crop_conversion<-left_join(
Farmhh_12_sub%>%
mutate_if(is.double, as.character),
Crop_code%>%
mutate_if(is.factor, as.character)%>%
pivot_longer(!c(code, desc_en), names_to = "q14404_2_701", values_to = "crop_conversion")%>%
Crop_code[complete.cases(Crop_code), ],
by=c("code"="q14402_701","q14404_2_701"="q14404_2_701"))
desired output
hhid indid q14402_701 q14404_2_701 crop_conversion
<chr> <chr> <dbl> <dbl> <dbl>
1 120100181 12010018102 1101 2 0.15
2 120100191 12010018101 1102 3 0.001
3 120101761 12010176103 NA NA NA
4 120101771 12010176102 1101 NA NA
5 120101781 12010176101 1103 2 0.14
6 120102891 12010289105 NA 1 NA
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果我正确理解问题,我将把查找表转换为长表,然后使用
lew_join()
将表加入,希望它有效并有所帮助。
If I understood the question correct, I would transform the lookup table to a long table and then join the tables with
left_join()
Hope it works and helps.