0

我在文本中分析了一些品牌,以找出 KPI,例如广告识别。但是到目前为止,包含特殊字符的品牌都被我的代码破坏了。

library(qdap)
library(stringr)
test <- c("H&M", "C&A", "Zalando", "Zalando", "Amazon", "Sportscheck")

wfm(test)

这是输出:

            all
a             1
amazon        1
c             1
h             1
m             1
sportscheck   1
zalando       2

有没有一种包装或方法来归档 H&M 得到 h&m,而不是像它的两个品牌那样的“h”和“m”?

编辑: wfm 函数有一个 ... 参数,应该允许我使用 strip 函数。

wfm(test, ... = strip(test, char.keep = "&"))

不幸的是不起作用。

4

2 回答 2

0

我不熟悉这个qdap包,但也许替代&可以解决你的问题

replacement <- "" # set your replacement e.g. "" (empty string) or "_"
test <- gsub("&", replacement, test, fixed = T)
于 2018-11-18T11:31:29.763 回答
0

我会说这样的话。在 udpipe 包中有一个函数document_term_frequencies,您可以在其中指定拆分并将数据转换为具有频率计数的 data.frame。如果没有要指定的 id 列,它将生成一个。的结果对象document_term_frequencies是一个data.table。

library(udpipe)

# data.frame without a ID column
my_data <- data.frame(text = c("H&M, C&A, Zalando, Zalando, Amazon, Sportscheck", 
                               "H&M, C&A, Amazon, Sportscheck"),
                      stringsAsFactors = FALSE)

# if you have an ID column add document = my_data$id to the function
# see more examples in ?document_term_frequencies
document_term_frequencies(my_data$text, split = ",")

   doc_id         term freq
1:   doc1          H&M    1
2:   doc1          C&A    1
3:   doc1      Zalando    2
4:   doc1       Amazon    1
5:   doc1  Sportscheck    1
6:   doc2          H&M    1
7:   doc2          C&A    1
8:   doc2       Amazon    1
9:   doc2  Sportscheck    1
于 2018-11-18T12:04:48.027 回答