用R语言分析我和男友的聊天记录
作者:伊莲小小小小仙女,R语言中文社区专栏作者。个人公众号:MeMyselfandYou
这篇文章大概在好几个月前就存在在脑海中。开始是看了《迟到的情人节礼物:做一个与她微信聊天的词云吧》,觉得作者写的很好玩,那个时候因为工作的原因刚开始学习R语言,一窍不通,我就想着那就用R学着同样分析一遍好了,应该能收获不少。于是,我开始分析和男友的微信聊天记录,只不过正如原文作者所说,分析着,情人节变情人劫怎么办?Anyway, 今天是来交作业的。
获取数据源
首先《迟到的情人节礼物:做一个与她微信聊天的词云吧》一文中的作者已经写的非常详细了,我也完全按照原文章中的步骤操作。不过在这里给大家两小提示:
1)网上有各类提取微信聊天记录的软件或攻略,每个mac版都试过,都不可行,后只有iMazing可以成功提取。
2)iMazing, 一定要下载正版,我就是因为误下盗版,差点把手机毁掉,到现在手机感觉还是有点坏坏的(后遗症)。这个软件功能强大,用不好的话IPhone变板砖。
原文是用Python写,下面是我的R代码,略有不同。本人代码能力为0,太复杂循环算法都写不了,只能按照自己的思路一点点拼出来。
library(RSQLite)
library(plyr)
//连接SQLitle数据库
conn <- dbConnect(dbDriver("SQLite"), dbname="MM.sqlite")
//设置连接函数
doCountQuery <- function(conn,table){
query <- paste("SELECT COUNT(name) FROM ",table,sep ="")
t <- dbGetQuery(conn,query) return(t)
}
table_name <- dbGetQuery(conn, "SELECT name FROM sqlite_master where type='table' and name like 'Chat_%' order by name")//取出所有表名,由于不会遍历,只能按照笨的办法,计算哪个表的数据量多,即是和男盆友的聊天记录表,如果不是和男盆友的聊天表,此方法是找不出来
counts <- numeric(0)for (i in 1:length(table_name) ){
count <- doCountQuery(conn,table_name[i])
counts[i] <-count[[1]]
}
//计算表长
table_count <- data.frame(counts)
//排序,表长大的表,即是和男朋友的聊天记录表
table_count1 <- table_count[order(table_count$counts,decreasing=TRUE),]
//提取到聊天内容
message <- dbGetQuery(conn, "SELECT * FROM Chat_XXXXXXXXXX ")
相关文章