2017-10-21 89 views
0

J'ai un fichier CSV avec 2 colonnes, la première colonne indique le nombre de tweets créés par un compte et la seconde le nom du compte. J'essaie de tracer la fréquence de la quantité de tweets. Donc 1 tweet aurait une fréquence de 2.Utilisation de 1 seule colonne pour représenter l'histogramme dans R

Voici mon code actuel.

UniqFreq <-read.csv("Uniq.csv", header = FALSE) 
hist(x=UniqFreq[,1], freq = TRUE) 

Problème est actuellement mon histogramme ressemble à des ordures. Il axe x est comme 250 longtemps ce qui est hors de proportion.

Toute aide ou conseil sur l'utilisation de la première colonne de données pour tracer la fréquence des nombres sur un histogramme serait très utile.

Répondre

3

ENTRÉE

df <- data.frame(value = c(1,2,4,1), name = c("bob","john","bob","james")) 
df 
# value name 
# 1  1 bob 
# 2  2 john 
# 3  4 bob 
# 4  1 james 

I. Tweet Fréquence de comptage

df 
# value name 
# 1  1 bob 
# 2  2 john 
# 3  4 bob 
# 4  1 james 

vec <- table(df$value) 
vec 
# 1 2 4 
# 2 1 1 

xx <- barplot(table(df$value), xlab = "Tweet Count", ylab = "Frequency of Tweet Counts", main = "Frequency of Tweets posted \nBased on Tweet Count", cex.main = 1, ylim = c(0,10)) 
text(x = xx, y = vec, label = vec, pos = 3, cex = 1, col = "blue") 

enter image description here


II. Tweet Nombre par personne

df 
# value name 
# 1  1 bob 
# 2  2 john 
# 3  4 bob 
# 4  1 james 

vec <- tapply(df$value, df$name, sum) 
vec 
# bob james john 
# 5  1  2 

xx <- barplot(vec, ylim = c(0,10), main = "Count of tweets per person") 
text(x = xx, y = vec, label = vec, pos = 3, cex = 1, col = "blue") 

enter image description here


+0

Peut-être que je LIBELLEES ma question mal. Je veux que l'axe x ait des nombres de tweets de 1 -> n. Donc, puisque 2 personnes ont chacune posté 1 tweet alors la valeur de l'axe x pour 1 a une fréquence de 2. – Liam

+1

Compris. Va mettre à jour –

+0

Mis à jour. Vérifiez s'il vous plaît. Les deux types sont là. –

0

Vos données

df <- read.table(text="1 billy 
8 johno 
3 bobby 
1 Rob", header=FALSE) 

Solution en utilisant ggplot et dplyr

library(dplyr) 
library(ggplot2) 

df %>% 
    count(V1) %>% 
    ggplot(data=., aes(x=factor(V1), y=n)) + 
    geom_col() + 
    xlab("Tweet Count") + 
    ylab("Frequency") + 
    ggtitle("Frequency of Tweet Counts") + 
    theme(plot.title = element_text(hjust = 0.5)) + 
    theme_classic()