R语言 ETL+统计+可视化
这篇文章。。。还是看文章吧
- 导入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+统计+可视化的更多相关文章
- 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 ...
- R语言︱常用统计方法包+机器学习包(名称、简介)
一.一些函数包大汇总 转载于:http://www.dataguru.cn/thread-116761-1-1.html 时间上有点过期,下面的资料供大家参考基本的R包已经实现了传统多元统计的很多功能 ...
- R语言-分组统计
分组统计 1.假定有一组成绩数据,要求根据性别进行分组统计: > score ID score1 score2 Gender1 101 11.35321 0.9 male2 ...
- R语言描述性统计常用函数
- R语言基础(二) 可视化基础
> which.max(apply(x[c("x1","x2","x3")], 1, sum))49 > x$num[which ...
- R语言基础(一) 可视化基础
##数据获取 x1=round(runif(100,min=80,max=100)) x2=round(rnorm(100,mean=80, sd=7)) x3=round(rnorm(100,mea ...
- 第一篇:R语言数据可视化概述(基于ggplot2)
前言 ggplot2是R语言最为强大的作图软件包,强于其自成一派的数据可视化理念.当熟悉了ggplot2的基本套路后,数据可视化工作将变得非常轻松而有条理. 本文主要对ggplot2的可视化理念及开发 ...
- 利用R语言进行交互数据可视化(转)
上周在中国R语言大会北京会场上,给大家分享了如何利用R语言交互数据可视化.现场同学对这块内容颇有兴趣,故今天把一些常用的交互可视化的R包搬出来与大家分享. rCharts包 说起R语言的交互包,第一个 ...
- R语言可视化
R语言基础(一) 可视化基础 ##数据获取 x1=round(runif(100,min=80,max=100)) x2=round(rnorm(100,mean=80, sd=7)) x3=ro ...
随机推荐
- (转)java DecimalFormat用法
DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字. DecimalFormat 包含一个模式 和一组符号 符号含义: 0 一个数字 # 一个数字, ...
- php使用curl 检测socks5 代理的可用性
少废话 直接粘代码 <?php define('PROXY_CONF', 'ip:port'); define('PROXY_CHECK_URL', 'http://www.bai ...
- 【原】HTML5 新增的结构元素——能用并不代表对了
做移动端有一段时间,今天有同事问了我 article 和 section 标签的使用,模模糊糊的解释了下,他似懂非懂,有点小尴尬.忽然间觉得自己有必要再翻翻书籍,重温下 html5 的新元素.html ...
- 洛谷P1101 单词方阵——S.B.S.
题目描述 给一nXn的字母方阵,内可能蕴含多个“yizhong”单词.单词在方阵中是沿着同一方向连续摆放的.摆放可沿着8个方向的任一方向,同一单词摆放时不再改变方向,单词与单词之间[color=red ...
- http协议进阶(三)http报文
一.报文流 http报文是在http应用程序之间发送的数据块(也可称为数据包).这些数据块以一些文本的元信息(meta-information)开头,描述了报文的内容及含义,后面跟着 可选的数据部分, ...
- Linux操作系统启动流程梳理
接触linux系统运维已经好几年了,常常被问到linux系统启动流程问题,刚好今天有空来梳理下这个过程:一般来说,所有的操作系统的启动流程基本就是: 总的来说,linux系统启动流程可以简单总结为以下 ...
- LCM 轻量级通信组件
LCM和ZMQ比较 http://www.doc88.com/p-6711552253536.html 基于LCM和ZeroMQ的进程间通信研究 2.简介 LCM(Lightweight Commuc ...
- Golang友团无闻Go语言Web基础视频教程
教程内容:GO语言资料Golang友团无闻Go语言编程基础Golang友团无闻Go语言Web基础教程 Go语言Web基础教程列表:[Go Web基础]12Go Web 扩展学习.mp4[Go Web基 ...
- Web前端之复选框选中属性
熟悉web前端开发的人都知道,判断复选框是否选中是经常做的事情,判断的方法很多,但是开发过程中常常忽略了这些方法的兼容性,而是实现效果就好 了.博主之前用户不少方法,经常Google到一些这个不好那个 ...
- EXT总结例子
//页面按钮点击展开隐藏 { 空格 xtype:'fieldset', title:'<b>高级搜索< ...