先对分析进行简单构思:

1、搜集并格式化数据

  a、搜集QQ群记录-从QQ导出txt文档,筛选出需要统计的QQ群记录信息。

  b、导入QQ群记录信息,根据\n换行符读取每一行的信息。

  c、逐行读取,利用正则表达式判断该行是否是时间行,是的话进行切割,分割出时间和昵称,该行的下一行则为聊天信息。

  d、把时间、昵称、聊天信息统一放到一个数据框中。

#导入QQ群记录
#stringsAsFactors=F 不转换为因子
#encoding="UTF-8" 读取编码为UTF-8
#sep="\n"换行读取
jilu<- read.table("QQ群记录.txt",stringsAsFactors=F,encoding="UTF-8",sep="\n",quote = NULL)#定义data数据框,后面读取jilu中的数据需要添加在里面
#定义几个临时变量,dateTime,name,des
data<-data.frame(dateTime=c(),user_name=c(),user_des=c(),stringsAsFactors = F)
dateTime <- character()
name <-character()
des<-character()#获取jilu的行数,[1]代表行,[2]代表列
rCount<-dim(jilu)[1]count <- 1
for(i in 1:rCount){#利用正则表达式,判断是否是时间行#下面表达式代表2017-06-29 13:42:35格式#[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]+:[0-9]+:[0-9]+#当该行满足表达式的时候,reg为满足的时间第一个字符所在的位置,不满足否则为-1reg <- regexpr("[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]+:[0-9]+:[0-9]+",jilu[i,])#因为聊天记录特殊性,只有满足表达式并且第一个字符就是时间的行才为真实的时间行if(reg==1){#计算昵称开始的位置=时间起始位置+时间长度+1#"match.length"在执行dt_pattern会自动显示这个为满足条件时间的长度#接上面,如果单独attr()使用的话,则是attr(已执行的正则,"match.length")获取在该正则中满足条件的字符长度user_begin=reg+attr(reg,"match.length")+1#计算昵称结束位置=该条记录长度,因为昵称都是写在最后的,nchar()计算字符串的长度user_end=nchar(jilu[i,])#获取昵称,substring(被截取的字符串,截取起点,截取终点)name <- substring(jilu[i,],user_begin,user_end)#获取时间,具体规则如上面dt_begin <- regdt_end <- reg+attr(reg,"match.length")-1dateTime <-substring(jilu[i,],dt_begin,dt_end)#获取聊天信息des <- jilu[i+1,]#把昵称、时间、聊天信息加入data中#行合并,一行一行自动添加入data,列合并为:cbinddata <- rbind(data,data.frame(dateTime,name,des))}
}

  最终data数据如下:

转载于:https://www.cnblogs.com/xugege/p/7380212.html

R语言实战-如何分析QQ群记录1-格式化数据相关推荐

  1. R语言实战-如何分析QQ群记录5-词云

    library(tm) library(tmcn) library(rJava) library(Rwordseg) #install.packages('wordcloud') library(wo ...

  2. R语言︱异常值检验、离群点分析、异常值处理

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:异常值处理一般分为以下几个步骤:异常 ...

  3. R语言亚组分析 (Subgroup Analysis)及森林图绘制实战

    R语言亚组分析 (Subgroup Analysis)及森林图绘制实战 目录 R语言亚组分析 (Subgroup Analysis)及森林图绘制实战 #亚组分析

  4. 对比《学习R》PDF代码+《R语言实战第2版》PDF代码+《R数据科学》PDF代码分析

    R语言是世界上最流行的用于数据处理和统计分析的脚本语言.考古学家用它来跟踪古代文明的传播,医药公司用它来探索哪种药物更安全.更有效,精算师用它评估金融风险以保证市场的平稳运行.总之,在大数据时代,统计 ...

  5. 计算机书籍-R语言机器学习预测分析实战

    书名:机器学习与R语言实战 作者:丘祐玮 出版社:机械工业出版社 ISBN:9787111535959 去当当网了解

  6. 单因素方差分析——R语言实战

    课题组的每个人都有实验任务,做实验的目的是为了获取实验数据,下一步就要进行数据分析,数据分析的方法各式各样.今天我给大家介绍,如何使用R语言进行单因素方差分析. 有人会问,什么是单因素方差分析? 试验 ...

  7. R语言实战笔记--第十二章 重抽样(置换检验)与自助法

    R语言实战笔记–第十二章 重抽样(置换检验)与自助法 标签(空格分隔): R语言 重抽样 自助法 置换检验 置换检验 双样本均值检验的时候,假设检验的方法就是,检查正态性.独立性.方差齐性,分别对应的 ...

  8. R语言实战笔记--第九章 方差分析

    R语言实战笔记–第九章 方差分析 标签(空格分隔): R语言 方差分析 术语 组间因子,组内因子,水平:组间因子和组同因子的区别是,组间因子对所有测试对象进行分组,而组内因子则把所有测试对象归为同一组 ...

  9. R语言实战笔记--第八章 OLS回归分析

    R语言实战笔记–第八章 OLS回归分析 标签(空格分隔): R语言 回归分析 首先,是之前的文章,数理统计里面的简单回归分析,这里简单回顾一下: 简单回归分析的原理:最小二乘法,即使回归函数与实际值之 ...

最新文章

  1. 【Java】LeetCode 225. 用队列实现栈
  2. 删除排序链表中的重复元素
  3. 对于150kHz导航信号放大检波天线保护电路
  4. 一文详解超参数调优方法
  5. 连续对焦 auto对焦_如何在Windows 10上使用对焦辅助(请勿打扰模式)
  6. NET问答: 如何避免在 EmptyEnumerable 上执行 Max() 抛出的异常 ?
  7. 说普通话时舌头卷不起来是一种什么体验?| 今日最佳
  8. 每日一笑 | 程序员的招租公告
  9. css中em与px的介绍及换算方法
  10. 【教程】一步一步教你如何自定义设置——博客园canvas/JS交互动画背景
  11. 罗永浩抖音直播带货100天,糊了?
  12. java 词典 分词_java分词中 用户自定义词典有什么要求
  13. (4)ArcGIS 10.2 去除要素的Z值和M值
  14. css/js解决 页面多次点击时出现部分蓝色
  15. Holt-Winters
  16. 【阿里云】DCDN全站加速介绍及配置
  17. c语言调用tuxedo步骤,c语言入门之BCB客户端tuxedo开发实例
  18. 大数据之直播平台数据统计
  19. ROB 第一篇 DFS BFS (寻迹算法)
  20. 网盘防和谐姿势①:压缩包篇

热门文章

  1. 播客推荐|斜杠青年研究所
  2. 软件工程毕业设计课题(82)微信小程序毕业设计PHP共享停车位小程序系统设计与实现
  3. STM32之在oled上实现文字滚动
  4. 微信公众号可通过现金红包接口发放微信支付现金红包(附开发教程)
  5. 遥感学习笔记(六)——SPOT卫星简介
  6. 用c语言编写字母循环,C程序使用循环显示从A到Z的字符
  7. 国内著名IT公司(百度、搜狗、网易、新浪)2012校园招聘笔试、面试小结
  8. 中山大学21年计算机学院考研情况 专硕最高分442!
  9. 订单系统jeecgboot
  10. 【IoT】硬件选型:如何正确区分电子线的端子型号?