我需要使用search_key
中的三列中列出的产品代码:
search_key <- data.frame('product' = c('Apple', 'Apple', 'Apple', 'Banana',
'Banana', 'Banana', 'Mango', 'Mango'),
'code' = c('123','000','232', '567', '222', '434',
'999', '909'))
标识product_list
中的特定产品:
product_list <- data.frame('code_1' = c('123','567','999'),
'code_2' = c('000', '222', NA),
'code_3' = c('232', NA, NA),
'price' = c('1.29', '2.29', '3.24'))
生成final_list
的最终结果:
final_list <- data.frame('code_1' = c('123','567','999'),
'code_2' = c('000', '222', NA),
'code_3' = c('232', NA, NA),
'price' = c('1.29', '2.29', '3.24'),
'product' = c('Apple', 'Banana', 'Mango'))
我可以使用哪些功能系统地使用product_list
中的代码搜索search_key
,以便在final_list
中识别并创建“产品”列?提前谢谢!
答案 0 :(得分:3)
这是给你的一种方式。看到你的最终结果,我想你想重新安排product_list
。我使用melt()
并以长格式转换了您的数据。然后,使用search_key
与code
合并。最后一步由spread()
包中的tidyr
完成;该函数将长格式数据转换为宽格式数据。
library(magrittr)
library(reshape2)
library(tidyr)
melt(product_list, id.var = "price", value.name = "code") %>%
merge(search_key, by = "code") %>%
spread(key = "variable", value = "code")
# product price code_1 code_2 code_3
#1 Apple 1.29 123 000 232
#2 Banana 2.29 567 222 <NA>
#3 Mango 3.24 999 <NA> <NA>