如何在CSV文件的每一行上执行wordcount?

时间:2016-05-07 22:00:00

标签: r

我有一个包含ID字段和TEXT字段的CSV文件。我需要在每一行添加第三个字段,其中包含TEXT字段的字数。 我该怎么办?

示例:如果这是我的起始数据框

  ID                                 TEXT
1  1           Lorem ipsum dolor sit amet
2  2           Praesent venenatis nisl id
3  3 Nunc dapibus maximus vulputate. Nunc

然后期望的结果是

  ID                                 TEXT WordCount
1  1           Lorem ipsum dolor sit amet         5
2  2           Praesent venenatis nisl id         4
3  3 Nunc dapibus maximus vulputate. Nunc         5

1 个答案:

答案 0 :(得分:6)

我会使用 stringi 包中的方便stri_count_words()函数。

df$WordCount <- stringi::stri_count_words(df$TEXT)

给出了

  ID                                 TEXT WordCount
1  1           Lorem ipsum dolor sit amet         5
2  2           Praesent venenatis nisl id         4
3  3 Nunc dapibus maximus vulputate. Nunc         5

但是在基数R中,您可以在删除标点后用strsplit()拆分空格,然后取出列表元素的长度。

lengths(strsplit(gsub("[[:punct:]]", "", df$TEXT), "\\s+"))
# [1] 5 4 5

或者,正如@David建议的那样,只需计算空格并添加1. trimws()用于删除可能潜伏在字符串开头或结尾的任何错误空格。

lengths(gregexpr("\\s+", trimws(df$TEXT))) + 1L
# [1] 5 4 5