2017-06-21 3 views
0

J'essaie d'utiliser le tidyverse (http://tidyverse.org/) pour analyser une liste de phrases en allemand. Je m'en tiens à ce guide (http://tidytextmining.com/). Lorsque j'essaie d'utiliser une liste de mots-clés en allemand, cela ne fonctionne tout simplement pas.R: Utiliser les mots d'arrêt allemands dans tidyverse mais anti_join ne fonctionne pas

library(tidyverse) 
library(readxl) # read excel 
library(tibble) # tobble dataframe 
library(dplyr) # piping 
library(stringr) # character manipulation 
library(tidytext) 
library(tokenizers) 

data <- read_xlsx("C:/R/npsfeedback.xlsx", sheet = "Tabelle1", col_names="feedback") 
data 
is.tibble(data) 

# tokenise 
data_clean <- data %>% 
    na.omit() %>% 
    unnest_tokens(word,feedback) 

Cela lui de la part me causer des ennuis:

# remove stopwords 
sw <- tibble(stopwords("de")) 
sw 

data_clean <- data_clean %>% 
    anti_join(.,sw) 

Mes topwords sont en Tibble avec une colonne et le type de caractères. Mais si j'essaie d'utiliser anti_join je reçois cette sortie:

Error: `by` required, because the data sources have no common variables 

Savez-vous ce que je dois faire?

Répondre

2

vous devez spécifier par quelle colonne des deux dataframes vous allez antijoin, si vous avez quelque chose comme ça

antijoin(., sw, by = c("first_df_var" = "second_df_var")) 

autrement R ne sait pas les colonnes à joindre par. vos deux dataframes doivent avoir un point commun à rejoindre pour l'une des fonctions de jointure

0

Sans arguments supplémentaires, anti_join s'attend à se joindre à des données avec le même nom de colonne.

L'astuce était

sw <- tibble(word = stopwords("de")) 

Ou comme sweetmusicality expliqué.

1

J'ai rencontré le même problème, mais au lieu de créer un nouvel objet, j'utilise l'opérateur de tuyau et j'ai utilisé le même nom que la variable stopword: "word". De cette façon, anti_join joindre les dataframes avec le même nom de colonne

`data_clean <- data %>% 
       mutate(linenumber = row_number()) %>% 
       unnest_tokens(word, feedback) %>% 
       anti_join(get_stopwords(language = "de")) %>% 
       ungroup()`