有效地重命名列值

时间:2018-12-17 20:04:37

标签: r rstudio data-manipulation data-cleaning renaming

我试图一次重命名数据中的值,而不是逐项进行重命名。

现在我正在使用以下代码执行更改:

INV$Classification[INV$Classification=="lay net"] <- "Illegal Lay Net"

我的数据是INV,我的列是分类。我想查找单词“ lay net”的所有实例,并将其替换为“ Illegal Lay Net”。我现在手动进行此操作,最终可以在excel中完成。有更有效的方法吗?

例如,我有诸如POSILBLE ILLEGAL LAY NET或Lay Nets Violation之类的条目,这些条目不能仅通过“ lay net”查找来获取,因此由于该代码非常具体,因此无法切换。

2 个答案:

答案 0 :(得分:0)

您要开始使用正则表达式。看一下gsubgrepgrepl和类似的功能。当然,这不是灵丹妙药,您仍然必须了解并确保抓住所有情况。

下面是一个示例,它将捕获您所说的3种情况:

INV$Classification[grepl("lay net", INV$Classification, ignore.case=T)] <- "Illegal Lay Net"

答案 1 :(得分:0)

这是一个使用stringr的详细tidyverse解决方案,首先转换为小写,然后测试其中是否包含“ lay net”,如果有,则替换为新字符串。

library(tidyverse)
INV <- INV %>% 
  mutate(Classification = if_else(Classification %>% 
                                  tolower %>% 
                                  str_detect("lay net"),
                                  "Illegal Lay Net", Classification)