替换R中测量单位的具体缩写。

问题描述 投票:1回答:1

我有一个数据集(一个文本语料库),我正在研究主题建模。在这个数据集中 计量单位货币 是不同的拼写或缩写。例如,250m代表250米,12cm代表12厘米,10€代表10欧元。既然有人写的是英寸、厘米、米或英里,这与分析无关,我想把这些缩写全部用一个词来代替,例如 "距离单位 "这个词。

遗憾的是,由于我分析的是用户生成的内容数据,文本语料库中并没有使用统一的缩写。因此,我不知道如何写一段代码,让R用一个指定的词("distanceunit "代表米、英寸等,"currency "代表所有货币)来替换这些单位(计量单位或货币)。

我想过用gsub来转换它们。但是,需要考虑到不同的写法和间距,比如 "250米 "与 "250米 "与 "250米"。

有没有办法在我定义了所有我想要替换的测量单位后,写一个gsub函数来核算上述不同的写法?有没有什么R包可以帮助解决这个问题?

谢谢你!我有一个数据集(一个数据集)。

r regex gsub data-cleaning topic-modeling
1个回答
2
投票
t <- c("250m foo", "250 m foo", "250 m. foo", "250m. foo", "300 Apples", "1963 May")

我试图找到一个限制性的regex来避免fals-positive。不知道你的结果会有多差......

建议的regex寻找以下模式: wordboundary (\\b),一个或多个数字([0-9]+),后面是一个可选的空格([ ]?)、一个或多个字母m和M([mM]+)和一个词限,后面是一个可选句号(\\b[.]?).

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

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"  
© www.soinside.com 2019 - 2024. All rights reserved.