错误:必填,因为数据源没有公共变量

时间:2019-02-25 15:23:13

标签: r

我正在尝试将代码应用于此链接中的数据 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`

有什么想法如何处理吗?

1 个答案:

答案 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)

在我的情况下,一个数据集的单词在“单词”列下,而另一个数据集的单词在“术语”列下。