我正在尝试将代码应用于此链接中的数据 https://www.tidytextmining.com/sentiment.html#sentiment-analysis-with-inner-join
本书中的代码是
nrc_joy <- get_sentiments("nrc") %>%
filter(sentiment == "joy")
tidy_books %>%
filter(book == "Emma") %>%
inner_join(nrc_joy) %>%
count(word, sort = TRUE)
我这样写(不包括“过滤器”,因为我的数据中只有文件名和单词coloumns)
nrc_joy <- get_sentiments("nrc") %>%
filter(sentiment == "joy")
abc %>%
inner_join(nrc_joy ) %>%
count(word, sort = TRUE)
它给了我以下错误:
`Error: `by` required, because the data sources have no common variables`
有什么想法如何处理吗?
答案 0 :(得分:0)
遇到类似问题后,我发现了这一点。
网站上的完整代码为:
library(janeaustenr)
library(dplyr)
library(stringr)
tidy_books <- austen_books() %>%
group_by(book) %>%
mutate(linenumber = row_number(),
chapter = cumsum(str_detect(text,
regex("^chapter [\\divxlc]",
ignore_case = TRUE)))) %>%
ungroup() %>%
unnest_tokens(word, text)
nrc_joy <- get_sentiments("nrc") %>%
filter(sentiment == "joy")
问题中未指定“ abc”数据集;但是,使用'differentColumnNameForWord'组成替代数据集很容易。
library(tidytext)
abc <- data.frame(differentColumnNameForWord = stop_words$word, stringsAsFactors = FALSE)
查找单词存储在数据框中的列名的方法是使用“名称”功能。
> names(abc)
[1] "DifferentColumnNameForWord"
一旦确定了列名,就需要对代码进行如下修改:
abc %>% inner_join(nrc_joy, by = c("DifferentColumnNameForWord" = "word")) %>%
count(DifferentColumnNameForWord, sort = TRUE)
在我的情况下,一个数据集的单词在“单词”列下,而另一个数据集的单词在“术语”列下。