我试图一次重命名数据中的值,而不是逐项进行重命名。
现在我正在使用以下代码执行更改:
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”查找来获取,因此由于该代码非常具体,因此无法切换。
答案 0 :(得分:0)
您要开始使用正则表达式。看一下gsub
,grep
,grepl
和类似的功能。当然,这不是灵丹妙药,您仍然必须了解并确保抓住所有情况。
下面是一个示例,它将捕获您所说的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)