【问题标题】:Replace specific abbreviations of measurement units in R替换 R 中测量单位的特定缩写
【发布时间】:2020-06-03 18:18:55
【问题描述】:

我有一个数据集(文本语料库),正在为主题建模而工作。 在数据集中,计量单位货币的拼写或缩写不同。例如,250m 代表 250 米,12cm 代表 12 厘米,10 欧元代表 10 欧元。由于与分析是否有人写英寸、厘米、米或英里无关,我想采用这些缩写并将它们全部替换为一个单词,例如单词“distanceunit”。

不幸的是,文本语料库中没有使用统一的缩写,因为我正在分析用户生成的内容数据。因此,我不确定如何编写代码,允许 R 用一个指定的单词替换这些单位(测量单位或货币)(“距离单位”表示米、英寸等,“货币”表示所有货币)。

我考虑过使用 gsub 来转换它们。但是,需要考虑不同的书写和间距,例如“250m”与“250m”与“250m”。与“250m”相比。

一旦我定义了我想要替换的所有测量单位,有没有办法编写一个 gsub 函数来解释上述不同的编写方法?是否有任何 R 软件包可以帮助解决该问题?

谢谢!

【问题讨论】:

    标签: r regex gsub data-cleaning topic-modeling


    【解决方案1】:
    t <- c("250m foo", "250 m foo", "250 m. foo", "250m. foo", "300 Apples", "1963 May")
    

    我试图找到一个限制性的正则表达式来避免误报。不知道你的结果会有多糟糕......

    建议的正则表达式查找以下模式:wordboundary (\\b)、一个或多个数字 ([0-9]+)、后跟一个可选空格 ([ ]?)、一个或多个字母 m 和/或 M ( [mM]+) 和一个单词边界,后跟一个可选句点 (\\b[.]?)。

    然后将带有数字的组重新插入替换参数("\\1 distanceunit" 中的 \\1

    gsub("(\\b[0-9]+)[ ]?[mM]+\\b[.]?", "\\1 distanceunit", t)
    

    返回:

    > "250 distanceunit foo" "250 distanceunit foo" "250 distanceunit foo" "250 distanceunit foo" "300 Apples"           "1963 May"  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-18
      • 2012-12-31
      • 1970-01-01
      • 2021-10-28
      • 1970-01-01
      • 2014-12-15
      • 2011-10-07
      • 2015-01-24
      相关资源
      最近更新 更多