【发布时间】:2016-04-02 09:34:18
【问题描述】:
我有一个包含 25 列和超过 60 万个观察值的数据集,其中一列名为“目的地”。本专栏有新加坡等目的地,以不同的方式书写,例如新加坡以 61 种不同的方式写成 SINGAPORE、S'PORE、SINGPORE 等。我打算将所有这些对应于 SINGAPORE 的值标准化,并为这个特定的目的地分配一个特定的代码以供进一步分析。
我尝试使用grep 和gsub() 来识别以ZHO 开头的目的地
NOV1151Sub <- NOV1151[grep("ZHO", NOV1151$destination)]
另外,我试过使用'stringr'包,但没有效果。
因此,我想在大数据集中识别一个字符串,例如'PORE' 在所有对应于新加坡的值中都很常见,并将其替换为 'SGR' 以进行进一步分析, 表格看起来像
NAME destination
a S'PORE
b SINPORE
C SINGAPORE
d XIAM
e XIAMIN
f XIAMEN
g YANTIAN
h YANTAI
i ZHANGJIANG
j ZHANGJIAGANG
k RTD
l ROTTER
想要的输出
NAME destination
a SINGAPORE
b SINGAPORE
c SINGAPORE
d XIAMEN
e XIAMEN
f XIAMEN
g YANTIAN
h YANTAI
i ZHANGJIAGANG
j ZHANGJAIGANG
k ROTTERDAM
l ROTTERDAM
在修复了更改模式的语法之后,我如何编写一个函数来在不同名称的数据集中使用相同的语法?例如,我想将任何具有序列“ZOU”的模式更改为“ZOUSHAN”以及许多其他类似的模式。
为了更改 NOV1151 数据集的目标列中的模式,我使用了以下代码 NOV1151$destination ZOU.", "ZHOUSHAN", NOV1151$destination)
为了编写函数,我查看了stringr包中gsub()和str_replace的源代码,并编写了代码来复制效果,但出现以下错误:
Gen(MAY214) 中的错误:缺少参数“x”,没有默认值 同时在 MAY214 数据集中更改相同的模式。我将我的函数命名为 Gen
我应该先创建一个参考 .CSV 文件,然后尝试使用它来更改任何数据集中的模式,还是可以以更好的方式完成?
【问题讨论】:
-
请提供可重现的示例和所需的输出
-
很可能是
NOV1151$destination <- gsub(".*PORE.*", "SGR", NOV1151$destination)。添加示例。 -
我已经用所需的输出和示例更新了问题。请看一看。谢谢
-
您也有其他字符串或只有新加坡相关的字符串?请完成您的示例。
标签: regex r sorting text pattern-matching