问题:
假设我们有一个非常庞大而混乱的数据帧。由于异构数据收集程序和拼写错误,变量的类别难以阅读。
> 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;)而无需人工干预。
我怀疑我从错误的角度来看待问题。关于此事的任何优雅建议都非常感激。