2017-09-30 4 views
1

J'ai récupéré Twitter tweets pour différents hashtags avec différentes période de suivi. Par exemple, hashtag1 a été suivi pendant 6 jours, Hashtag2 suivi pendant 4 jours, Hashtag3 suivi pendant 2 jours. Comment puis-je normaliser chaque hashtag? Comment puis-je les diviser en quartiers égaux? Merci d'avance ... Voici le code ......>Comment normaliser les tweets dans l'histogramme en utilisant le langage R?

library(streamR) 
    library(rjson) 

    setwd("/Users/Desktop") 
    Tweets = parseTweets("Hashtag1.json") 
    table(Tweets$created_at) 

    dated_Tweets <- as.POSIXct(Tweets$created_at, format = "%a %b %d %H:%M:%S 
    +0000 %Y") 

    hist(dated_Tweets, breaks="hours", freq=TRUE, xlab="dated_Tweets", main= 
    "Distribution of tweets", col="blue") 
+0

Pouvez-vous nous montrer ce que vous obtenez en ce moment, et expliquer ce que vous êtes pas satisfait exactement? Voulez-vous quelque chose comme _tweets par jour_ pour chacun des hashtags? –

+0

Oui, j'ai visualisé l'histogramme pour chaque hashtag, mais chaque hashtag a une période de suivi différente, donc je veux normaliser chaque hashtag. Par exemple, je veux diviser chaque jour qui est de 24 heures en 4 trimestres (toutes les 6 heures) puis accumuler tous les jours ensemble au même histogramme. – user3643380

+1

Vous avez donc l'horodatage du tweet. Vous voulez créer un histogramme de "quarts de jour" pour chaque tweet? Vous voulez voir si # 2 est tweeté plus, disons dans les heures du matin, et # 4 la nuit? –

Répondre

1

Je pense que votre principale pierre d'achoppement est de convertir les dates-heures en bacs de 6 heures. Vous pouvez réaliser ceci avec format.POSIXct et cut. Voici une suggestion, complète avec un histogramme. Il y a plusieurs façons de faire les histogrammes, peut-être préférerez-vous une table à la place.

library(magrittr) 
    library(ggplot2) 
    ## create some tweet times 
    hash1 <- lubridate::ymd("20170101") + lubridate::seconds(runif(100, 0, 10*86400)) 
    hash2 <- lubridate::ymd("20170101") + lubridate::seconds(runif(100, 0, 31*86400)) 
    hash3 <- lubridate::ymd("20170101") + lubridate::seconds(runif(300, 0, 5*86400)) 
    ## bin these into 6h intervals 
    bins1 <- format(hash1, "%H") %>% 
     as.numeric() %>% 
      cut(breaks=c(0,6,12,18,24), include.lowest = TRUE) 
    hTags <- data.frame(tag="#1", bins=bins1) 
    bins2 <- format(hash2, "%H") %>% 
     as.numeric() %>% 
      cut(breaks=c(0,6,12,18,24), include.lowest = TRUE) 
    hTags <- rbind(hTags, 
        data.frame(tag="#2", bins=bins2)) 
    bins3 <- format(hash3, "%H") %>% 
     as.numeric() %>% 
      cut(breaks=c(0,6,12,18,24), include.lowest = TRUE) 
    hTags <- rbind(hTags, 
        data.frame(tag="#3", bins=bins3)) 
    ggplot(data=hTags, aes(x=bins, fill=tag)) + geom_bar(position="dodge", aes(y=..prop.., group=tag)) 

enter image description here

+0

Oui, merci! mais où je peux lire le fichier JSON ici? @OttToomet – user3643380

+0

Vous devriez lire et analyser ceux où j'ai créé les aléatoires. Je n'ai pas vos données donc je devais trouver la mienne ... –

+0

Oui, merci. Je l'ai compris, mais j'ai deux questions. 1- comment normaliser chaque bin? 2- comment obtenir la valeur numérique pour chaque bin? – user3643380