r - 替换数据框列中的文本

时间:2018-03-21 15:27:07

标签: r regex dataframe replace gsub

如果答案很简单,我道歉;我是R的新手,但找不到解决方案

我有一个数据框,我感兴趣的列('subject')每行都有一个单词列表。

title  subject
-----  -----------------------------------------------
 A     c("health sciences", "life sciences")
 B     c("biochemistry", "medicine", "life sciences")
 C     c("physics and astronomy", "mathematics")

我想用“生物学”替换(并因此分类)每个标题的所有与生物学相关的单词。所以基本上,如果任何标题都有与生物相关的主题列表,那么他们的主题将被更简单的“生物学”所取代。

这样我的数据框看起来像这样:

title  subject
-----  -----------------------------------------------
 A     biology
 B     biology
 C     c("physics and astronomy", "mathematics")

我如何将所有以关键字词开头的单词(例如“bio”,“health”,“med”,“life”等)替换为“生物学”?

1 个答案:

答案 0 :(得分:1)

尝试改编代码:

玩具data.frame

df<-data.frame(title=c("A","B"),subject=c("health sciences", "other stuffs"))

解决方案:

toMatch<-c("^bio","^health", "^med", "^life")
df$subject<-as.character(df$subject)
df[grepl(paste(toMatch,collapse="|"),df$subject ),"subject"]<-"biology"

你的输出:

df
  title      subject
1     A      biology
2     B other stuffs