2014-06-09 4 views
0

J'essaie de comprendre comment je pourrais identifier les documents (tweets dans ce cas) en fonction d'un terme qu'ils peuvent inclure. Disons que j'ai cette trame de données (df), qui est composée d'une liste du nom d'écran des utilisateurs de Twitter et de l'un de leurs tweets.R tm/qdap - Obtenir un document basé sur le terme

> df 
    ScreenName tweet       
[1,] "Guy A" "one random tweet"    
[2,] "Guy B" "another random tweet"   
[3,] "Guy C" "a third random piece of text" 

Eh bien, dans ce cadre de données je voudrais obtenir les tweets qui incluent un certain terme « tweet » - et extrait ceux d'un nouveau cadre de données (DF2) comme ceci:

> df2 
    ScreenName tweet     
[1,] "Guy A" "one random tweet"  
[2,] "Guy B" "another random tweet" 

Je suppose qu'il doit y avoir un moyen de le faire en utilisant les paquets tm ou qdap. Mais n'a pas pu trouver quelque chose et a fini avec ce gâchis;

Après avoir nettoyé le corpus je convertir à termDocumentMatrix

tdm <- TermDocumentMatrix(corpus, control=list(minWordLength=1)) 

Ensuite, je distinguerai dans quelle ligne du terme document Matrice terme Je suis intéressé est

t <- as.vector(tdm[term,]) 

Sous-ensemble - si terme a été mentionné plus d'une fois

t.df <- as.data.frame(t) 
t.sub <- subset(t.df, t >= 1) 

Obtenez le numéro de document (numéro de ligne)

t.n <- as.numeric(rownames(t.sub)) 

Créer de nouvelles trames de données où t.tw - incluant uniquement les tweets mentionnant terme et t.o - autres tweets

t.tw <- tw[t.n,] 
t.o <- tw[!1:nrow(tw) %in% t.n, ] 

Merci pour votre aide.

Excuses si le morceau de code horrible ci-dessus a offensé tout utilisateur R accompli.

+0

On ne sait pas ce que vous demandez. 'tm_filter' fonctionne très bien si vous voulez rechercher un terme/texte dans un document. Comment l'avez-vous appliqué? – agstudy

+0

Il vaudrait mieux passer votre temps à formater la question d'une manière claire et cohérente avec un exemple reproductible et une sortie désirée plutôt que de poster un code que vous appelez "horrible". Si vous utilisez ce code pour décrire le problème, les chances de communiquer efficacement votre question et le résultat souhaité diminuent considérablement. Plus précisément, partagez un mini-corpus qui ressemble à vos données. Partagez les termes que vous voulez rechercher. –

Répondre

0

Je reste dans la base pour cela et utiliser la fonction grep (si vous avez déjà un data.frame) avec la ligne suivante:

df[grep("tweet", df$tweet), ] 

Ici, il est en tout avec vos données:

df <- read.table(text='ScreenName tweet       
"Guy A" "one random tweet"    
"Guy B" "another random tweet"   
"Guy C" "a third random piece of text"', header=TRUE) 

df[grep("tweet", df$tweet), ] 

## ScreenName    tweet 
## 1  Guy A  one random tweet 
## 2  Guy B another random tweet 
Questions connexes