查找一个数组中的单词在R中的另一个数组中出现的次数?

时间:2014-03-21 00:59:44

标签: r nlp cran

你好,我有两个阵列' topWords'长度为N(独特单词),以及'观察到的词语'长度< N(重复单词)。

我喜欢一系列的计数&count 39.rray'长度N包含' topWords'中的每个N个单词的次数。发生在数组'观察到的词汇中。在R中执行此操作的有效方法是什么?

3 个答案:

答案 0 :(得分:1)

您可以使用表格和匹配功能。请参阅下面的示例代码不确定它们是否适合你。

topWords <- c('A', 'B', 'C')
observedWords <- c(rep('A', 5), rep('B', 4))
count <- table(observedWords)
pos <- match(topWords, names(count))
fre <- as.numeric(count)[pos]

答案 1 :(得分:1)

以下是使用matchunique的简单示例。最后ifelseNA值转换为0

> topWords <- paste(LETTERS, letters, sep = "")
> topWords
##  [1] "Aa" "Bb" "Cc" "Dd" "Ee" "Ff" "Gg" "Hh" "Ii" "Jj" "Kk" "Ll" "Mm" "Nn" "Oo"
## [16] "Pp" "Qq" "Rr" "Ss" "Tt" "Uu" "Vv" "Ww" "Xx" "Yy" "Zz"
> observedWords <- c("Bb", rep("Mm", 2), rep("Pp", 3))
> observedWords
## [1] "Bb" "Mm" "Mm" "Pp" "Pp" "Pp"
> mm <- match(topWords, unique(observedWords))
> ifelse(is.na(mm), 0, mm)
## [1] 0 1 0 0 0 0 0 0 0 0 0 0 2 0 0 3 0 0 0 0 0 0 0 0 0 0

答案 2 :(得分:1)

使用RScriv的例子:

topWords <- paste(LETTERS, letters, sep = "")
observedWords <- c("Bb", rep("Mm", 2), rep("Pp", 3))

library(qdap)
termco(observedWords, match.list=topWords)

##   all word.count Aa        Bb Cc Dd Ee Ff Gg Hh Ii Jj Kk Ll        Mm Nn Oo        Pp Qq Rr Ss Tt Uu Vv Ww Xx Yy Zz
## 1 all          6  0 1(16.67%)  0  0  0  0  0  0  0  0  0  0 2(33.33%)  0  0 3(50.00%)  0  0  0  0  0  0  0  0  0  0

如果您只想使用counts方法包装频率:

counts(termco(observedWords, match.list=topWords))