1

问题:

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

> 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 级别为四个。我想让它们只有两个:“暴风雪”和“风暴”。

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

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

尝试:

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

我可以启动一个 recode dt$evty[dt$evty=="(.[Bb][Ll][Ii])+"] <- "blizzard",但我没有找到一个合适的过程来结合索引和正则表达式。

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

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

在这里: 用 R 重新编码变量

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

但我不知道如何创建一个程序来处理拼写错误(即“blissard”而不是“blizzard”)而无需人工干预。

我怀疑我从错误的角度面对问题。任何关于此事的优雅建议都非常感谢。

4

0 回答 0