优化回路功能
问题描述:
我有一个包含列“agency_lookup”一“Agency_Reference”表中,对字符串的200个条目,如下:优化回路功能
- 阿尔法
- 测试
- 伽马等等。
我有一个数据帧“TEST”包含的条目,如“运动”列一百万行:
- Alpha_xt2010
- alpha_xt2014
- Beta_xt2016等。
我通过在引用表中的每个条目要循环,发现这串是每个广告系列列条目中存在,并创建一个新的agency_identifier列在表中变量。
我目前的代码如下,执行速度很慢。请求如何优化相同的指导。我想了解如何做到这一点的data.table方式
Agency_Reference <- data.frame(agency_lookup = c('alpha','beta','gamma','delta','zeta'))
TEST <- data.frame(Campaign = c('alpha_xt123','ALPHA345','Beta_xyz_34','BETa_testing','code_delta_'))
TEST$agency_identifier <- 0
for (agency_lookup in as.vector(Agency_Reference$agency_lookup)) {
TEST$Agency_identifier <- ifelse(grepl(tolower(agency_lookup), tolower(TEST$Campaign)),agency_lookup,TEST$Agency_identifier)}
预期输出:
活动---- Agency_identifier
alpha_xt123 ---阿尔法
ALPHA34- --- alpha
Beta_xyz_34 ---- beta
BETa_testing ---- be TA
code_delta _-----三角洲
答
尝试
TEST <- data.frame(Campaign = c('alpha_xt123','ALPHA345','Beta_xyz_34','BETa_testing','code_delta_'))
pattern = tolower(c('alpha','Beta','gamma','delta','zeta'))
TEST$agency_identifier <- sub(pattern = paste0('.*(', paste(pattern, collapse = '|'), ').*'),
replacement = '\\1',
x = tolower(TEST$Campaign))
请出示一个小重复的例子,并且预期输出 – akrun
@akrun:我已经发布了最初的代码,有错误。因此编辑了代码以显示我当前使用的实际代码。请让我知道是否需要其他信息,以帮助查询。 –
你的代码特别给出了错误。 'for'循环。什么是预期的输出 – akrun