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

  • 导入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

R语言 ETL+统计+可视化的更多相关文章

  1. python调用R语言,关联规则可视化

    首先当然要配置r语言环境变量什么的 D:\R-3.5.1\bin\x64; D:\R-3.5.1\bin\x64\R.dll;D:\R-3.5.1;D:\ProgramData\Anaconda3\L ...

  2. R语言︱常用统计方法包+机器学习包(名称、简介)

    一.一些函数包大汇总 转载于:http://www.dataguru.cn/thread-116761-1-1.html 时间上有点过期,下面的资料供大家参考基本的R包已经实现了传统多元统计的很多功能 ...

  3. R语言-分组统计

    分组统计 1.假定有一组成绩数据,要求根据性别进行分组统计: > score    ID   score1 score2 Gender1  101 11.35321    0.9   male2 ...

  4. R语言描述性统计常用函数

  5. R语言基础(二) 可视化基础

    > which.max(apply(x[c("x1","x2","x3")], 1, sum))49 > x$num[which ...

  6. R语言基础(一) 可视化基础

    ##数据获取 x1=round(runif(100,min=80,max=100)) x2=round(rnorm(100,mean=80, sd=7)) x3=round(rnorm(100,mea ...

  7. 第一篇:R语言数据可视化概述(基于ggplot2)

    前言 ggplot2是R语言最为强大的作图软件包,强于其自成一派的数据可视化理念.当熟悉了ggplot2的基本套路后,数据可视化工作将变得非常轻松而有条理. 本文主要对ggplot2的可视化理念及开发 ...

  8. 利用R语言进行交互数据可视化(转)

    上周在中国R语言大会北京会场上,给大家分享了如何利用R语言交互数据可视化.现场同学对这块内容颇有兴趣,故今天把一些常用的交互可视化的R包搬出来与大家分享. rCharts包 说起R语言的交互包,第一个 ...

  9. R语言可视化

    R语言基础(一) 可视化基础   ##数据获取 x1=round(runif(100,min=80,max=100)) x2=round(rnorm(100,mean=80, sd=7)) x3=ro ...

随机推荐

  1. 通过RTMP play分析FLV格式详解

    最近做了一个rtmp中转服务程序,通过实践,熟悉rtmp play和push中各类格式,这里总结一下. 程序github地址: https://github.com/runner365/rtmp_re ...

  2. Java程序设计之合租房synchronized(二)

    一号和二号合租一间房,里面共用一个卫生间对象,这是要用到synchronized关键字,一号与二号同时使用卫生间时,一个需要wait()等待被唤醒,另外一个使用完之后卫生间对象被释放,这时候刚刚使用的 ...

  3. [转]Windows平台下Makefile学习笔记

    Windows平台下Makefile学习笔记(一) 作者:朱金灿 来源:http://blog.csdn.net/clever101 决心学习Makefile,一方面是为了解决编译开源代码时需要跨编译 ...

  4. 使用spring方式来实现aop编程

    1:什么是aop? Aspect Oriented Programming 面向切面编程 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译 ...

  5. C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 访问频率限制功能实现、防止黑客扫描、防止恶意刷屏

    很多软件组件,大家都能想到了,大家也能做出来,但是成熟稳定.可靠.易用.功能全面,可信任,可相信,可开源就不是很容易,需要树立良好的口碑才可以. 1:往往会有黑客,进行撞库挖掘漏洞,很多系统的账户有可 ...

  6. C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 角色权限的配置页面改进优化

    往往开发的人不是维护的人,开发的单位不是维护的单位.信息的畅通沟通交流很多时候会有打折.扭曲.甚至是容易得到歪解.配置错业务操作权限.为了防止发生没必要的麻烦,甚至是发生重大错误,我们的软件需要不断换 ...

  7. Apache Shiro系列一,概述 —— 初识

    一.什么是Shiro Apache Shiro是一个强大.灵活.开源的安全框架,它支持用户认证.权限控制.企业会话管理以及加密等. Apache Shiro的第一个也是最重要的一个目标就是易于使用和理 ...

  8. 进程间通信(linux)(转)

    原帖发表在IBM的developerworks网站上,是一个系列的文章,作者郑彦兴,通过讲解和例子演示了Linux中几种IPC的使用方式,我觉得很好,在这里做一个保留,能看完的话Linux IPC的基 ...

  9. C#进阶系列——DDD领域驱动设计初探(二):仓储Repository(上)

    前言:上篇介绍了DDD设计Demo里面的聚合划分以及实体和聚合根的设计,这章继续来说说DDD里面最具争议的话题之一的仓储Repository,为什么Repository会有这么大的争议,博主认为主要原 ...

  10. Spring Boot入门===Hello World

    昨天无意间看到Spring Boot ,今天又了解了一下,试着写一个Hello World!  今天看了半天,最后还是要用Maven最方便!以下: 一.工具 JDK1.7 Eclipse Maven ...