R 重新编码仅为整个值的一部分的字符值
我试图在可以有多个文本值的列中重新编码一个值。我正试图将我的“来源”专栏中的所有内容重新编码,从“BBC新闻”改为“BBC新闻-非洲”。我得到的代码用于观察BBC新闻的唯一价值。然而,我需要重新编码,以便在除了BBC新闻之外还有其他来源的观测中工作。“最近”是我的数据帧 这是我重新编码的代码: ''' 重新编码(最近$来源,“BBC新闻”=“BBC新闻-非洲”)R 重新编码仅为整个值的一部分的字符值,r,dplyr,recode,R,Dplyr,Recode,我试图在可以有多个文本值的列中重新编码一个值。我正试图将我的“来源”专栏中的所有内容重新编码,从“BBC新闻”改为“BBC新闻-非洲”。我得到的代码用于观察BBC新闻的唯一价值。然而,我需要重新编码,以便在除了BBC新闻之外还有其他来源的观测中工作。“最近”是我的数据帧 这是我重新编码的代码: ''' 重新编码(最近$来源,“BBC新闻”=“BBC新闻-非洲”) ''您可以尝试使用str_replace() 玩具数据框: Recent<-data.frame(a=1:4, source=c
''您可以尝试使用str_replace() 玩具数据框:
Recent<-data.frame(a=1:4, source=c("BBC News", "BBC News - Africa", "BBC News - International", "NBC News"))
> Recent
a source
1 1 BBC News
2 2 BBC News - Africa
3 3 BBC News - International
4 4 NBC News
更新(参见GuedesBF的宝贵评论)
来自GuedesBF的玩具数据(非常感谢)。
我们可以使用ifelse
和stru-detect
library(dplyr)
library(stringr)
Recent %>%
mutate(source = ifelse(str_detect(source, "BBC News"), "BBC News", source))
输出:
a source
1 1 BBC News
2 2 BBC News
3 3 BBC News
4 4 NBC News
sub(“.*BBC News.*”,“BBC News-Africa”)
不清楚“在除了BBC新闻之外还有其他来源的观测中需要重新编码”是什么意思。这些“Other源”如何在数据对象中表示。请发布一个创建要使用的R数据对象的示例。这里只有一个条件。简单的ifelse(str_-detect(source,“BBC-News”,“BBC-News”,source)
就足够了吗?str_-detect
也与tidyverse-syntax兼容,你不喜欢使用str_-detect(source,…)
而不是str-detect(最近的$source,…)
?也就是说,您的解决方案似乎非常合理,特别是如果OP在其真实数据集中有许多模式需要替换,那么就更好了。谢谢您的回答。请参阅我的编辑。
a source
1 1 BBC News
2 2 BBC News
3 3 BBC News
4 4 NBC News