【问题标题】:How do I correct spelling mistakes in data frame如何纠正数据框中的拼写错误
【发布时间】:2021-04-05 19:24:05
【问题描述】:

在数据框中,“明天”一词有多种写法。如何将其全部更改为相同?

现在

TOMORROW
2moro
Tomorrow 
tomorrow
tomrow

我想要的结果

Tomorrow 
Tomorrow 
Tomorrow 
Tomorrow 
Tomorrow

【问题讨论】:

  • 你的数据集中有这5种书面类型吗,还是会有更多的拼写错误?
  • 这是我在一篇专栏文章中遇到的 5 个错误。我使用了独特的功能来查看所有独特的价值。

标签: r


【解决方案1】:

@Reju:在 R 中有很多方法可以覆盖、替换等字符串或部分字符串。对于您的情况,您可以使用经典的 if-spelling-condition,然后用正确的拼写方法替换。

使用 R & tidyverse (dplyr) 执行此操作的一种方法是 case_when() 函数。我指出这个函数,因为您的实际应用案例可能会更困难,您将不得不添加更多条件。这也使您无需定义嵌套的 ifelse() 调用。

我将您的数据转换为一个简单的数据框/tibble,即 my_df,其中包含一个变量 WHEN。注意:还请阅读未来可重现的示例。

使用 dplyr 的 mutate,我创建了一个新列,即 WHEN_C。显然,您可以覆盖现有的列 ...
如果您还必须清除其他条件,case_when() 可以让您免于使用许多嵌套的 ifelse 语句。 case_when() 末尾的 TRUE 条件保持其他值不变。如果您的数据在该列中有其他正确的条目,您可能需要这个。 %in% 运算符允许您提供选项向量并简化更长的 value1 OR value2 OR value3 ... 条件语句的构造。

    my_df <- my_df %>% 
    mutate(WHEN_C = case_when(
         WHEN %in% c("TOMORROW","2moro", "Tomorrow","tomorrow","tomrow" ) ~ "tomorrow"
        ,TRUE ~ WHEN
        )
    )

这会产生:

显然,还有其他方法可以通过字符串操作来做到这一点。它们需要所谓的正则表达式,如果你想了解的话。

【讨论】:

    【解决方案2】:

    试试这个

    typos <-  c("TOMORROW", "2moro", "Tomorrow", "tomorrow", "tomrow")
    df <- data.frame(date = typos)
    df[df$date %in% typos,] <- "Tomorrow"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-15
      • 1970-01-01
      • 1970-01-01
      • 2012-05-30
      • 2018-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多