如何解决编写一个函数来扫描列表的键/名称,然后在找到匹配的键时返回并粘贴相应的值?
我正在使用两个独立的数据集:
包含零售数据 (POS) 的主数据库有一个商品代码列,例如 (12831903,E03JD920)。 (我将此作为 DF AS 导入,因为 tibble 导致解析错误)
辅助数据库具有项目代码和相应的项目描述。我把它放到一个 R 列表中:
itemlist <- setNames(as.list(itemcodes$l1desc),itemcodes$itemcode)
主数据集存储为 main
。我正在尝试编写一个函数/循环来检查 main 中 itemcode
列的每一行,并查看 itemlist
中是否存在匹配项。如果匹配,函数/循环会将匹配键中的相应值粘贴到新向量中。这个过程循环直到每一行都找到了匹配项。
我该如何编写这个循环?
The image below shows what the list looks like
The second image is a snippet of what the main dataframe looks like
所以再次总结一下,我希望编写一个函数来解析列表以将值与主 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)
这就是我的伪代码的样子,我尝试运行它的一些初始变体,但不断抛出一个错误,即 NA 正在解析,但这可能是因为 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 脚本中的某种集合进行访问。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。