2017-10-21 98 views
0

我有一个包含2列的CSV,第一列显示了一个帐户的推文数量,第二列显示了帐户名称。仅使用1列值绘制R中的直方图

1 billy 
8 johno 
3 bobby 
1 Rob 

我试图绘制推文数量的频率。所以1条推文的频率为2.

这是我现在的代码。

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

问题是目前我的直方图看起来像垃圾。它的x轴像250长,这是不成比例的。

有关使用第一列数据绘制直方图上数字的频率的任何帮助或建议将非常有帮助。

回答

3

INPUT

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计数频率

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


二,鸣叫每人计数

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

也许我的措辞我的问题很差。我希望x轴有1到n个推文的数量。因此,由于2人分别发布了1条推文,因此1的x轴值的频率为2. – Liam

+1

了解。将udpate –

+0

更新它。请检查。两种都在那里。 –

0

你的数据

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

解决方案使用ggplotdplyr

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()