r - R:计算列中每个唯一字符的频率
问题描述
我有一个数据框 df
,其中包含一个名为strings
. 此列中的值是一些句子。
例如:
id strings
1 "I want to go to school, how about you?"
2 "I like you."
3 "I like you so much"
4 "I like you very much"
5 "I don't like you"
现在,我有一个停用词列表,
["I", "don't" "you"]
如何制作另一个数据框,将每个唯一词(停用词除外)的出现总数存储在前一个数据框的列中。
keyword frequency
want 1
to 2
go 1
school 1
how 1
about 1
like 4
so 1
very 1
much 2
我的想法是:
- 将列中的字符串组合成一个大字符串。
- 制作一个存储大字符串中唯一字符的列表。
- 制作一列是唯一词的df。
- 计算频率。
但这似乎真的效率低下,我不知道如何真正编码。
解决方案
一种方法是使用tidytext
. 这里有一本书和代码
library("tidytext")
library("tidyverse")
#> df <- data.frame( id = 1:6, strings = c("I want to go to school", "how about you?",
#> "I like you.", "I like you so much", "I like you very much", "I don't like you"))
df %>%
mutate(strings = as.character(strings)) %>%
unnest_tokens(word, string) %>% #this tokenize the strings and extract the words
filter(!word %in% c("I", "i", "don't", "you")) %>%
count(word)
#> # A tibble: 11 x 2
#> word n
#> <chr> <int>
#> 1 about 1
#> 2 go 1
#> 3 how 1
#> 4 like 4
#> 5 much 2
编辑
所有标记都转换为小写,因此您要么包含i
在 stop_words 中,要么将参数添加lower_case = FALSE
到unnest_tokens
推荐阅读
- git - 如何在我不是所有者的情况下签署我对 Github 存储库的提交?
- php - Laravel:eloquent-sluggable
- javascript - 通过javascript的宽度和高度不起作用?
- ios - 更改 UINavigationItem 可访问性元素顺序
- oracle - 如何将用户输入参数值存储到 PLSQL 中的单独表中
- ios - 用于 Xcode 的 Tesseract:未加载库
- reactjs - 反应选择多个真-逗号分隔值显示
- python - 有没有办法选择 HTML 文件的某个部分并使用 python 将其粘贴到另一个文件中?
- php - 身份证号码不变
- java - 我可以在 Arraylist.contains 方法的参数内查询对象的某个属性吗?