Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 重新编码仅为整个值的一部分的字符值_R_Dplyr_Recode - Fatal编程技术网

R 重新编码仅为整个值的一部分的字符值

R 重新编码仅为整个值的一部分的字符值,r,dplyr,recode,R,Dplyr,Recode,我试图在可以有多个文本值的列中重新编码一个值。我正试图将我的“来源”专栏中的所有内容重新编码,从“BBC新闻”改为“BBC新闻-非洲”。我得到的代码用于观察BBC新闻的唯一价值。然而,我需要重新编码,以便在除了BBC新闻之外还有其他来源的观测中工作。“最近”是我的数据帧 这是我重新编码的代码: ''' 重新编码(最近$来源,“BBC新闻”=“BBC新闻-非洲”) ''您可以尝试使用str_replace() 玩具数据框: Recent<-data.frame(a=1:4, source=c

我试图在可以有多个文本值的列中重新编码一个值。我正试图将我的“来源”专栏中的所有内容重新编码,从“BBC新闻”改为“BBC新闻-非洲”。我得到的代码用于观察BBC新闻的唯一价值。然而,我需要重新编码,以便在除了BBC新闻之外还有其他来源的观测中工作。“最近”是我的数据帧

这是我重新编码的代码:

''' 重新编码(最近$来源,“BBC新闻”=“BBC新闻-非洲”)
''

您可以尝试使用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