【发布时间】:2014-08-14 15:22:34
【问题描述】:
我有一个包含 600 个响应的数据集,其中包含一个“Free_Text”变量,其中包含来自受访者的反馈/cmets。现在我想计算每个受访者在 cmets 中的单词数。我该怎么做?我是 R 的新学习者,正在 R 工作室工作。
【问题讨论】:
-
请不要在没有a reproducible example的情况下寻求帮助。
标签: regex r pattern-matching
我有一个包含 600 个响应的数据集,其中包含一个“Free_Text”变量,其中包含来自受访者的反馈/cmets。现在我想计算每个受访者在 cmets 中的单词数。我该怎么做?我是 R 的新学习者,正在 R 工作室工作。
【问题讨论】:
标签: regex r pattern-matching
考虑使用stringi 包中的stri_extract_words,尤其是当您有非英文文本时。它使用 ICU 的 BreakIterator 来完成这项任务,并包含一个复杂的断词规则列表。
library(stringi)
str <- c("How many words are there?", "R — язык программирования для статистической обработки данных и работы с графикой, а также свободная программная среда вычислений с открытым исходным кодом в рамках проекта GNU.")
stri_extract_words(str)
## [[1]]
## [1] "How" "many" "words" "are" "there"
##
## [[2]]
## [1] "R" "язык" "программирования" "для" "статистической"
## [6] "обработки" "данных" "и" "работы" "с"
## [11] "графикой" "а" "также" "свободная" "программная"
## [16] "среда" "вычислений" "с" "открытым" "исходным"
## [21] "кодом" "в" "рамках" "проекта" "GNU"
sapply(stri_extract_words(str), length) # how many words are there in each character string?
## [1] 5 25
【讨论】:
拆分字符串并计算元素是一种简单的入门方法。
str = "This is a string."
str_length = length(strsplit(str," ")[[1]])
> str_length
[1] 4
【讨论】:
这可能会有所帮助:
str1 <- c("How many words are in this sentence","How many words")
sapply(gregexpr("\\W+", gsub("[[:punct:]]+","",str1)), length) + 1
#[1] 7 3
还有,
library(qdap)
word_count(str1)
#[1] 7 3
str2 <- "How many words?."
word_count(str2)
#[1] 3
【讨论】:
还有一种方法,使用 stringr 包列出单个单词:
str1 <- c("How many words are in this sentence","How many words")
length(unlist(str_match_all(str1, "\\S+" ))) # list all words -- strings that end with one or more white spaces, then unlist them so that the length function counts them
【讨论】: