这篇文章。。。还是看文章吧

  • 导入QQ群信息,进行ETL,将其规范化
  • 计算哪些QQ发言较多
  • 计算一天中哪些时段发言较多
  • 计算统计内所有天的日发言量
setwd("C:/Users/liyi/Desktop")
a<-readLines("message2.txt",encoding = "UTF-8",skipNul=T)
head(a,20)
nchar(a)
# 除去空白行
newa<-a[nchar(a)>1]
length(a)
length(newa)
head(newa,10)
#删除前6行
newa1<-newa[7:length(newa)]
head(newa1,10)
#寻找发言人 “2016-04-23 21:26:02 (qq-xxxxxxxxx)”
temp<-grep("2016-.",newa1);temp
time_name_qq<-newa1[temp]
#防止有人更换昵称,将QQ号作为唯一的标识
str(time_name_qq)
head(time_name_qq)
[1] "2016-04-23 21:26:02 (4xxxxxxxx)" "2016-04-23 21:26:22 xxxxx(xxxxxxx)"
[3] "2016-04-23 21:26:54 (4xxxxxxxxx)" "2016-04-23 21:51:21 Fair(1xxxxxxxxx)"
[5] "2016-04-23 22:39:02 麦x(1xxxxxxxxx7)" "2016-04-24 9:13:45 (xxxxxxxx)"
经观察,time_name_qq 的格式,QQ号 位于()或者<> 内,截取QQ号,利用正则表达式

subqq<-function(x){
start<-regexpr("\\(|<",x)
end<-regexpr("\\)|>",x)
substr(x,start+1,end-1)
}
qq<-subqq(time_name_qq)
计算每次留言的行数
liuyan<-c(1:length(temp)) for (i in 1:length(temp)){
liuyan[i] <-(temp[i+1]-temp[i])
}
liuyan<-liuyan-1
liuyan[length(temp)]<-1
QQ号按留言行数重现
totalqq<-rep(qq,liuyan)
totalqq
tb_qq<-table(totalqq)
tb_qq<-as.data.frame.table(tb_qq)
按留言量将tb_qq结果可视化
plot_qq<-ggplot(tb_qq)+geom_bar(aes(x=reorder(totalqq,Freq),y=Freq,fill=totalqq),stat = "identity")+
coord_flip()+
theme(legend.position='none')

查看每人留言情况的分布

hist_qq<-ggplot(tb_qq,aes(x=Freq,fill=..x..))+geom_histogram(binwidth = 2)

box_qq<-ggplot(tb_qq,aes(x="totalqq",y=Freq))+geom_boxplot()+geom_jitter()
library(grid)
subvp<-viewport(width = 0.4,height = 0.5,x=0.7,y=0.75)
hist_qq
print(box_qq,vp=subvp)



可以看出留言量在0~20的区间中的人很多,留言最多的为347,有2人

查看一天各时段留言量分布情况
time<-substr(time_name_qq,1,19)
head(time)
total_time<-rep(time,liuyan)
total_hour<-rep(substr(time_name_qq,12,13),liuyan) tb_hour<-table(total_hour)
tb_hour<-as.data.frame.table(tb_hour) hour<-ggplot(tb_hour)+
geom_bar(aes(x=total_hour,y=Freq,fill=total_hour),stat = "identity")
hour

查看留言量按天的分布
total_day<-rep(substr(time_name_qq,1,10),liuyan)
tb_day<-table(total_day)
tb_day<-as.data.frame.table(tb_day) day<-ggplot(tb_day)+geom_bar(aes(x=total_day,y=Freq,fill=total_day),stat = "identity")+
theme(axis.text.x=element_text(angle=90,hjust=1,colour="black"),legend.position='none')
day

day<-ggplot(tb_day,aes(x=total_day,y=Freq,group=1))+
geom_point()+geom_path()+
theme(axis.text.x=element_text(angle=90,hjust=1,colour="black"),legend.position='none')
day

最新文章

  1. For循环打印正三角,倒三角,菱形
  2. 解决Win8无法升级.NET Framework 3.5.1 提示错误0x800F0906
  3. Log4net在类库中的用法
  4. GUI 快捷键的实现思路
  5. 蓝桥杯 入门训练 Fibonacci数列(水题,斐波那契数列)
  6. 【js】IE、FF、Chrome浏览器中的JS差异介绍
  7. 怎样成为一名PHP专家?
  8. Web前端新人笔记之HeightCharts基础
  9. IOS的一个带动画的多项选择的控件(一)
  10. 浅析Struts1和Struts2的Action线程安全问题
  11. Ceph RBD CephFS 存储
  12. linux:基本命令
  13. 剑指offer--二叉树的后序遍历
  14. ERR Unsupported CONFIG parameter: notify-keyspace-events; nested exception is redis.clients.jedis.exceptions.JedisDataException
  15. 【BZOJ4569】萌萌哒(并查集,倍增)
  16. 【Unity Shaders】Mobile Shader Adjustment—— 什么是高效的Shader
  17. js&#183;&#183;&#183;DOM2动态创建节点
  18. Azkaban学习之路 (二)Azkaban的安装
  19. ElasticSearch 2 (34) - 信息聚合系列之多值排序
  20. phpstorm10激活加汉化

热门文章

  1. audacity开源VS2013环境搭建
  2. Fast RCNN 训练自己数据集 (2修改数据读取接口)
  3. UVA11021 Tribles[离散概率 DP]
  4. 2016第二届陕西省网络空间安全大赛WriteUp
  5. iOS widget开发
  6. HTML错误码
  7. ThinkPHP常用查询
  8. 快速部署tomcat项目的Shell脚本
  9. Win10系统出问题?简单一招即可修复win10!
  10. Python-urlparse