编写一个函数来扫描列表中的键/名称,然后在找到匹配的键时返回并粘贴相应的值?



我有两个独立的数据集,我正在使用:

包含零售数据(POS)的主数据库有一个项目代码列,例如(12831903,E03JD920)。(我将此导入为DF,因为导入为tibble抛出解析错误)

二级数据库有项目代码和相应的项目描述。我把它放到R列表中:

itemlist <- setNames(as.list(itemcodes$l1desc),itemcodes$itemcode)

主数据集存储为main。我试图编写一个函数/循环,检查主列itemcode的每一行,看看itemlist中是否有匹配。如果存在匹配,则函数/循环将匹配键中对应的值粘贴到新向量中。这个过程循环,直到每一行都找到一个匹配。

我怎么写这个循环?

下面的图片显示了列表的样子

第二张图片是主数据框架的一个片段

因此再次总结,我希望编写一个函数,通过列表解析以匹配主df中的项目代码值。我的最终目标是获取具有匹配项描述的新向量,然后再次将其与主数据框架合并。

for(i in 1:nrow(transactions)) {
if (transactions[i,4] == itemlist[i]) {
#if item code in pos log is equal to item code in list, paste corresponding 
## value from key-value pair
mapped_items[i] <- paste0(names(itemlist))
}}
View(mapped_items)

这是我的伪代码看起来像,我试着运行这个的一些初始变体,但不断抛出一个错误,NAs正在被解析,但这可能是因为tibble。关于如何优雅地实现这个函数/循环,有什么想法吗?

如果有必要,我也会在python中尝试使用dict

我的python伪代码如下:
def search(itemcode, code):
match "" " "
for i in itemcode:
if (code == i):
match = code
return match

def mapitems(transactions,itemcode):

mappedlist = {}
i = 0 
for code in transactions:
mappedlist.append(search(itemcode,code))
return mappedlist

实际上,您既不应该使用R也不应该使用Python在实际的SQL数据库上执行非常基本的操作:

SELECT *
FROM item_codes ic
INNER JOIN retail_data rd
ON rd.item_code = ic.item_code

只需执行上面的查询,然后在R或Python脚本中以某种集合的形式访问结果集。

相关内容

  • 没有找到相关文章

最新更新