微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用一个特定的词替换整个字符串

如何解决用一个特定的词替换整个字符串

我在 df 中有此列:

Column1
今天阳光明媚
晴天
今天阳光不是很好

期望输出

Column1
晴天
晴天
不是晴天
df<-df%>%
  mutate(column_1=case_when(
    str_detect(column_1,"very sunny")~ "sunny",str_detect(column_1,"sunny")~ "sunny","not"&"sunny")~ " not sunny",)
         )

代码适用于前两行,其中第三行有更简单的条件,但条件更复杂并给我一个错误

我想确定该字符串中的一些关键字,它们不在一起(非常晴朗)但它们是分开的(今天不是非常晴朗),并将它们作为条件以提供所需的输出。也许我在语法上做错了。

解决方法

df$column2 <- sub('(not )?.*(sunny).*','\\1\\2',df$Column1)
df
               Column1   column2
1 very sunny day today     sunny
2         it was sunny     sunny
3 not very sunny today not sunny
,

第三行是&&而不是&

,

试试这个。

df <- data.frame(column_1 = c("very sunny today","sunny today","not very sunny today","very very sunny today","sunny today,not","not sunny today","no sun today"))

df%>%
  mutate(column_1 = case_when(
    (str_detect(column_1,"not") & str_detect(column_1,"sunny")) ~ "not sunny",str_detect(column_1,"very sunny")~ "sunny","sunny")~ "sunny",TRUE ~ "Unspecified"
  )
)

它处理not出现在sunny之前或之后,并由零个或多个单词分隔。我在您的测试数据框中添加了更多示例。最好将 TRUE ~ "" 语句包含到 case_when() 中,除非您确定将捕获所有可能的输入。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。