使用动态查找将一个数据集上的值替换为另一个数据集中的值
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 中掌握的高级方法。
这个问题主要与 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 中掌握的高级方法。