【问题标题】:Highlight words in R list of strings based on term document matrix基于术语文档矩阵突出显示R字符串列表中的单词
【发布时间】:2017-12-04 12:53:26
【问题描述】:

以下是活动数据的数据框

 Subject                  Response Rate(%)     Campaign Type    Channel
  Buy Stunning Phone A        81.00                   A         e-mail
 Special Emi OFFER             81.00                   B            e-mail
 Buy Stunning Phone at EMI     73.00                   C            SMS
The game changer is here.      85.00                   A            SMS
 Buy Stunnig Phone A           80.00                   A            SMS
 Special Emi OFFER             88.00                   B         e-mail
 Buy Stunning Phone at EMI     48.00                   C        e-mail
The game changer is here.      48.00                   A         e-mail
Buy Stunning Phone             89.00                   A         e-mail
 Special Emi OFFER             89.00                   B         SMS
 Buy Stunning Phone at EMI     69.00                   C         SMS

我创建了一个术语文档矩阵,如下所示

    Word    Frequency
     big    10
   upgrade  10
    worth   10
     latest 9
     much   9
    phone   8
 exciting   8
    back    7
  colours   7
    case    6
  stylish   6
   clear    6
experience  5
     time   5

我已按基于 dplyr 的渠道类型对数据进行了子集化,以降低响应率。 我希望针对每个主题突出显示/列出术语文档矩阵的单词。如果该词出现在主题中,则作为主题附近的单独列表列出。我找不到这样做的方法。

【问题讨论】:

  • “突出显示”是什么意思?
  • 请编辑您的问题并添加您使用的代码。

标签: r dplyr subset lookup


【解决方案1】:

你的意思是这样的

library(dplyr)

df <- read.table(header = TRUE, sep = "," ,text = "Subject,Response Rate(%),Campaign Type,Channel
Buy Stunning Phone A,81.00,A,e-mail
Special Emi OFFER,81.00,B,e-mail
Buy Stunning Phone at EMI,73.00,C,SMS
The game changer is here.,85.00,A,SMS
Buy Stunnig Phone A,80.00,A,SMS
Special Emi OFFER,88.00,B,e-mail
Buy Stunning Phone at EMI,48.00,C,e-mail
The game changer is here.,48.00,A,e-mail
Buy Stunning Phone,89.00,A,e-mail
Special Emi OFFER,89.00,B,SMS
Buy Stunning Phone at EMI,69.00,C,SMS",)


df2 <- read.table(header = TRUE, sep = "," ,text = "Word,Frequency
big,10
upgrade,10
worth,10
latest,9
much,9
phone,8
exciting,8
back,7
colours,7
case,6
stylish,6
clear,6
experience,5
time,5",)

m = sapply(df2$Word %>% as.character() %>% trimws(),regexpr,text = df$Subject %>% as.character(),ignore.case = TRUE)

df$keyWord <- sapply(1:nrow(m),function(idx){
t = m[idx,] > 0 %>% unlist()
paste0(names(t)[t],collapse = ",")
})
df

【讨论】:

  • 这很好用。但是这些词似乎没有显示在列表中
  • @VishnuRaghavan 嗨,对不起,它们是您复制和粘贴代码时出现的代码错误。请再试一次,看看是否有效?
  • 亲爱的@BBertil Nestorius。它现在似乎起作用了。谢谢
  • 问题是read.tabledf2的单词前面加了很多空格
  • 效果很好。将尝试扩展它以在每个句子的列表中创建一组 2 个单词。非常感谢再次
猜你喜欢
  • 2012-01-12
  • 1970-01-01
  • 2015-08-05
  • 1970-01-01
  • 2015-05-19
  • 1970-01-01
  • 1970-01-01
  • 2015-05-05
  • 1970-01-01
相关资源
最近更新 更多