R和元字符:处理拼写错误

时间:2015-12-22 16:47:00

标签: r conditional factors levels recode

问题:

假设我们有一个非常庞大而混乱的数据帧。由于异构数据收集程序和拼写错误,变量的类别难以阅读。

> dt

id  var1   
1   blissard
2   Blizzard/Storm
3   storm of snow
4   DUST STORM/BLIZZARD

> class(dt$var1)
[1] "factor"

> levels(dt$var1)
[1] "blissard"               
[2] "Blizzard/Storm"                
[3] "storm of snow"
[4] "DUST STORM/BLIZZARD"

目标:

dt $ var1级别为4级。我想让他们只有两个:"暴雪"和"风暴"。

> levels(dt$var1)
[1] "blizzard"               
[2] "blizzard"                
[3] "storm"
[4] "blizzard"

注意:生成新变量dt $ var1b是可行的。

尝试:

正确记录观察[2]是我的主要问题。即使输入错误,数据库也非常混乱,因此我必须使用带有一般正则表达式的逻辑语句来提供recoding函数。

我可以启动重新编码dt$evty[dt$evty=="(.[Bb][Ll][Ii])+"] <- "blizzard",但我找不到合适的程序来组合索引和正则表达式。

我可以用dt$var1 <- lowercase(dt$var1)部分减少问题,但它无法解决拼写错误的问题,并可能导致信息丢失。

我在这里找到了有价值的信息: http://www.cookbook-r.com/Manipulating_data/Recoding_data/

在这里: Recoding variables with R

以及正则表达式: https://www.stat.auckland.ac.nz/~paul/ItDT/HTML/node84.html

但是我没有得到如何创建一个允许我处理拼写错误的程序(即#34; blissard&#34;而不是&#34;暴雪&#34;)而无需人工干预。

我怀疑我从错误的角度来看待问题。关于此事的任何优雅建议都非常感激。

0 个答案:

没有答案