【发布时间】:2020-11-06 10:49:40
【问题描述】:
我正在尝试使用 regexp_replace 在 sparklyr 中清理表中的字符串。我需要删除单词之间的多个空格和特定的整个单词。
建立 Spark 连接
pharms <- spark_read_parquet(sc, 'pharms', 's3/path/to/pharms', infer_schema = TRUE, memory = FALSE)
要清理的向量
我要清理的 df 向量看起来像这样,但它位于 sparklyr 连接的表中:
drug_strings <- c("tablomiacin sodium tab mg", "nsaid caps mg")
正则表达式处理数据后所需的输出将是这样的:
期望的结果
[1] "tablomiacin sodium", "nsaid"
尝试
我尝试了正则表达式中使用的各种组合,例如:
pharms_cln <- pharms %>%
distinct(drug_strings)%>%
mutate(new_strings=regexp_replace(drug_strings, "\\b(caps|mg|tab)\\b", ""))
pharms_cln <- pharms %>%
distinct(drug_strings)%>%
mutate(new_strings=regexp_replace(drug_strings, "\\s+", ""))
但它们都只是替换所有字母或子字符串,而不仅仅是单个单词或打印与 hive 相关的错误。同样,我尝试删除空格的努力似乎只是删除了字母's'。
【问题讨论】:
-
那么适用于寻求替换的规则是什么:
caps|mg|tab之前的任何内容? -
nsaid caps之间有两个空格,对吗? -
是的,基本上我已经清除了非字母字符。
-
更新后的答案对您有用吗?
标签: r regex tidyverse sparklyr