r +搜索字符串和返回值

时间:2014-06-05 18:38:19

标签: regex r

这是非常基本的,但我还没有找到一种简单的方法。假设我有以下数据框:

chars <- data.frame(type = c('ferrari_car--sport','ducati:bike:speed','honda:car_family','ninja_bike:speed','lambo_car','harley_bike'))

我想要的只是搜索此数据框的“类型”列中的每个值并创建另一列。如果文本中包含“car”则返回“car”;如果它包含“自行车”然后返回“摩托车”(最终我希望能够为一堆不同的值做到这一点)

我的方法是复制列,gsub“// car //”用于“car”(同样用于自行车),然后从任一端剥离“//”。

有更快/更简单的方法吗?

1 个答案:

答案 0 :(得分:2)

typestr <- c('ferrari_car','ducati_bike',
  'honda:trolley_family','ninja_bike:speed','lambo_car','harley_bike')

library(stringr)
xstr <- str_extract(typestr,"(trolley|car|bike)")
rstr <- list(c("car","car"),c("bike","motorcycle"),c("trolley","trike"))
for (r in rstr) xstr <- gsub(r[1],r[2],xstr)

ifelse(grepl("bike",typestr),"motorcycle",
     ifelse(grepl("car",typestr),"car",
           ifelse(grepl("trolley",typestr),"trike",NA)))

可能有str_replace的替代方案,或者通过Reduce()使上面的示例更加优雅......