1

我想从 Textmining with R web 教科书创建一个绘图,但使用我的数据。它基本上每年搜索最热门的术语并将它们绘制成图表(图 5.4:http ://tidytextmining.com/dtm.html )。我的数据比他们开始使用的数据要干净一些,但我是 R 新手。我的数据有一个“日期”列,格式为 2016-01-01(它是一个日期类)。我只有 2016 年的数据,所以我想做同样的事情,但更细化,(即按月或按天)

library(tidyr)

year_term_counts <- inaug_td %>%
extract(document, "year", "(\\d+)", convert = TRUE) %>%
complete(year, term, fill = list(count = 0)) %>%
group_by(year) %>%
mutate(year_total = sum(count))

year_term_counts %>%
filter(term %in% c("god", "america", "foreign", "union", "constitution", 
"freedom")) %>%
ggplot(aes(year, count / year_total)) +
geom_point() +
geom_smooth() +
facet_wrap(~ term, scales = "free_y") +
scale_y_continuous(labels = scales::percent_format()) +
ylab("% frequency of word in inaugural address")

这个想法是我会从我的文本中选择我的特定单词,看看它们在几个月内如何变化。

谢谢!

4

1 回答 1

1

如果您想根据已有的日期列查看较小的时间单位,我建议您查看 lubridate 中的floor_date()orround_date()函数。您链接到的我们书中的特定章节涉及获取文档术语矩阵然后对其进行整理等。您是否已经为数据获得了整洁的文本格式?如果是这样,那么您可以执行以下操作:

date_counts <- tidy_text %>%
    mutate(date = floor_date(Date, unit = "7 days")) %>% # use whatever time unit you want here
    count(date, word) %>%
    group_by(date) %>%
    mutate(date_total = sum(n))

date_counts %>%
    filter(word %in% c("PUT YOUR LIST OF WORDS HERE")) %>%
    ggplot(aes(date, n / date_total)) +
    geom_point() +
    geom_smooth() +
    facet_wrap(~ word, scales = "free_y")
于 2017-06-14T04:02:51.503 回答