使用动态查找将一个数据集上的值替换为另一个数据集中的值

Replace a value on one data set with a value from another data set with a dynamic lookup

这个问题主要与 Alteryx 相关,但是如果它可以在 Python 中完成,或者使用 R 工具在 Alteryx 工作流中的 R 中完成,那么也可以。

我有两个数据集。

地址(包含地址信息:Line1、Line2、City、State、Zip)

USPS(包含 USPS 缩写:Street 到 ST,Boulevard 到 BLVD 等)

目标:查看 Line1 的地址数据集上的字符串。如果它包含 USPS 数据集中的一种街道类型,我想用它在 USPS 数据集中不同列中的正确缩写替换字符串的那部分。

例如,123 Main Street 将变为 123 Main St

我尝试过的: 导入了两个数据集。 使用 Output All Fields for When Fields Different 指令将两个数据集合并。 添加了一个公式,但这是我卡住的地方。到目前为止它是:

if [Addr1] Contains(Sting, Target)

不确定如何在 USPS 中查找其中一个值。我也不确定是否可以进行这种动态查找。

如果这可以在 python 中完成(我知道非常基础 Python 所以我还没有这方面的代码因为除了导入数据我不知道从哪里开始)我可以在 Alteryx 中使用 python。

任何帮助都会很棒。如果您需要更多信息,请告诉我。

提前谢谢你。

可以使用的整体逻辑在这里:

但是,为了扩展到 Alteryx,您需要添加 Alteryx R 工具。此外,需要更改一些代码以使用 Alteryx 喜欢的语法。

读入数据:

read.Alteryx('#Link Number', mode = 'data.frame')

之后,上面的链接问题将提供逻辑的整体框架。在此重申:

usps[] = lapply(usps, as.character)
##Copies the original address data to a new column that will
##be altered.  Preserves the orignal formatting for rollback 
##if necessary
vendorData$new_addr1 = as.character(vendorData$Addr1)

##Loops through the dictionary replacing all of the common names
##with their USPS approved abbreviations for the Addr1 field.
for(i in 1:nrow(usps)) {
  vendorData$new_addr1 = str_replace_all(
    vendorData$new_addr1,
    pattern = paste0("\b", usps$Abbreviation[i], "\b"),
    replacement = usps$USPS_Abbrv_updated[i]
  )
}

最后,为了能够看到输出,我们需要编写一条语句,将其输出到 R 工具具有的 5 个输出槽之一。这是相关代码:

write.Alteryx(data, #)

使用 Alteryx 中的查找替换工具。此工具类似于查找。此外,使用 Alteryx 社区作为解决此类问题的途径。

将地址数据集输入到查找替换工具的顶部锚点,将 USPS 数据集输入到底部锚点。您需要使用查找字段查找地址字段的任何部分,并将其替换为缩写字段。如果您需要跨地址数据集中的多个字段执行此操作,那么您可以复制此逻辑,或者您可以使用 Record ID 工具,Transpose,运行 一个字段上的此逻辑,然后交叉制表回原始模式。这是您希望在 Alteryx 中掌握的高级方法。

https://help.alteryx.com/current/FindReplace.htm