【问题标题】:Error: `by` required, because the data sources have no common variables错误:需要`by`,因为数据源没有公共变量
【发布时间】:2019-07-19 01:10:23
【问题描述】:

我正在尝试将代码应用于此链接中的数据 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,因为数据源没有公共变量

有什么办法可以解决吗?

【问题讨论】:

  • 两个表的列名不同,所以没有“自然”连接可以猜测
  • 我认为这个错误来自不同的东西。也许,我应该在链接github.com/duttashi/text-analysis/issues/4 中包含类似的内容
  • 引入一个新列作为两个数据集中的 ID 并使用它加入(我认为)。
  • 在 Github issue 中,问题是两个数据框之间没有匹配的列/列名。如果您在两个数据框中都有匹配的列,例如一个 ID,一个连接函数可以猜出这是要连接的列。如果没有,则需要提供by,例如by = c("id1" = "id2")inner_join 的文档很好地解释了这一点

标签: r


【解决方案1】:

在遇到类似问题后,我发现了这个问题。

来自网站的完整代码是:

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'函数。

> names(abc)
[1] "DifferentColumnNameForWord"

一旦确定了列的名称,就需要按如下方式修改代码:

abc %>% inner_join(nrc_joy, by = c("DifferentColumnNameForWord" = "word")) %>% 
        count(DifferentColumnNameForWord, sort = TRUE)

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-27
    • 2020-07-12
    • 2011-11-30
    • 1970-01-01
    • 2021-11-23
    • 2014-07-27
    • 1970-01-01
    • 2022-01-20
    相关资源
    最近更新 更多