2017-08-15 3 views
0

Très nouveau en R et en codage, et en essayant de faire une analyse fréquentielle sur une longue liste de phrases et leur pondération donnée. Je n'ai pas imbriqué et muté les données, mais lorsque j'essaie de supprimer les mots d'arrêt, l'ordre de tri des mots dans chaque phrase est aléatoire. J'ai besoin de créer des bigrams plus tard, et je préférerais qu'ils soient basés sur la phrase originale.R - correction du tri lors de l'utilisation de anti_join pour supprimer les mots vides (création de ngrams)

Voici le code correspondant, peut fournir plus si insuffisante:

library(dplyr) 
library(tidytext) 

data = data%>% 
    anti_join(stop_words)%>% 
    filter(!is.na(word)) 

Que puis-je faire pour conserver l'ordre de tri d'origine dans chaque phrase? J'ai tous les mots dans une phrase indexée afin que je puisse les faire correspondre à leur poids donné. Existe-t-il un meilleur moyen de supprimer les mots d'arrêt qui ne gâchent pas l'ordre de tri?

a vu une question similaire ici, mais il est sans solution: How to stop anti_join from reversing sort order in R?

a également essayé cela, mais n'a pas fonctionné: dplyr How to sort groups within sorted groups?

obtenu l'aide d'un collègue par écrit cela, mais malheureusement, ils ne sont pas plus disponibles de sorte que tout la perspicacité sera utile. Merci!

Répondre

0

Vous pouvez ajouter une sorte index à vos données avant le tri

library(dplyr) 
library(tidytext) 

data = data %>% 
    dplyr::mutate(idx = 1:n()) %>% 
    dplyr::anti_join(stop_words) %>% 
    dplyr::filter(!is.na(word)) %>% 
    dplyr::arrange(idx) 

(le dplyr:: n'est pas nécessaire, mais vous aide à vous rappeler où la fonction est de)

+0

Essayé cela, mais mon index est pour toute la phrase elle-même plutôt que chaque mot à l'intérieur, de sorte que la phrase elle-même est toujours brouillée. Je veux que les bigrams soient créés pour la phrase originale, par exemple en prenant le tweet de Trump "Make America Great Again" plutôt que "Make America", "America Great" et "Great Again" mon code retourne bigrams comme "Make Great ":( – shwarmashubs

+0

pourriez-vous poster un exemple de ce que vos données ressemblent? Meilleur serait un exemple reproductible afin que nous puissions jouer avec. –