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

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

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

包含零售数据 (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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?