R - 排序数据框中的正则表达式

时间:2017-05-21 15:03:12

标签: r regex

假设我有以下数据框。 我有一个包含最常用词的列表(表" imp")以及下面我有一个包含不同模型的表。 我要做的是创建第二列(名称"单词"),其中最频繁的单词逐渐排序(如下所示)。

imp<-data.frame(word=c("ls","lxl","mec","hatch","bi"),frec=c(100,90,80,85,70)) 

  word   frec
   ls     100
   lxl    90
   mec    80
   hatch  85
   bi     70

table=data.frame(code=c(1,2,3,4,5),model=c("hatch ls 1.0 8v", " onix 2016 ls 1.0 ar condicionado + direcao hidraulica","onix hatch ls 1.0 8v flexpower 5p mec.",
                                       "volvo xc bi turbo blindada","honda civic sedan lxl 1.8 flex 16v mec 4p aceita troca"),
                                       words=c("ls hatch", "ls","ls hatch","bi","lxl"))

code                                        model               words
  1                                        hatch ls 1.0 8v   ls hatch
  2  onix 2016 ls 1.0 ar condicionado + direcao hidraulica       ls
  3                 onix hatch ls 1.0 8v flexpower 5p mec.   ls hatch
  4                             volvo xc bi turbo blindada       bi
  5 honda civic sedan lxl 1.8 flex 16v mec 4p aceita troca   lxl mec

1 个答案:

答案 0 :(得分:2)

我们可以尝试

library(stringr)
sapply(str_extract_all(table$model, paste(imp$word, collapse="|")), 
      function(x) paste(head(x[order(-imp$frec[match(x, imp$word)])], 2), collapse= " "))