Ошибка: требуется `by`, потому что источники данных не имеют общих переменных - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь применить коды к моим данным в этой ссылке 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)

Я написал это как следующий (исключенный) фильтр"потому что в моих данных есть только столбцы имен файлов и слов)

nrc_joy <- get_sentiments("nrc") %>% 
  filter(sentiment == "joy")

abc %>% inner_join(nrc_joy ) %>% count(word, sort = TRUE) Я получаю эту ошибку:

Ошибка: by требуется, потому что источники данныхнет общих переменных

Есть идеи, как с этим справиться?

1 Ответ

0 голосов
/ 29 июня 2019

После того, как я столкнулся с подобной проблемой, вот что я нашел.

Полный код с сайта:

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)

В моей ситуации в одном наборе данных были слова под словом "word"столбец, в то время как другой имел слова под столбцом «термин».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...