library(rJava)
library(dplyr)
library(Rwordseg)
library(wordcloud2)
library(stringr)
path
file
#读取数据
head(QQ)
str(QQ)
#定义:
infor
times
users
# 通过正则表达式提取聊天记录里的时间,用户和聊天消息
for(i in 1:length(QQ)){
reglog
'[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]+:[0-9]+:[0-9]+',QQ[i]) # 给出匹配正则表达式的位置
if(reglog[1]==1){
times[i]
users[i]
}
else {
infor[i]
}
}
#查询times,users,infor, infor多出一列,删除第一列
infor
#合并数据:
data
#查看data,有NA数据,进行删除
head(data)
for(n in 1:dim(data)[1]){
if(is.na(data[n,1])){
if(is.na(data[n,2])){
if(is.na(data)[n,3]){
data
}
}
}
}
#进行分析:
text
text
installDict(dictpath="F:\\\\2-个人资料\\\\R\\\\R-字典\\\\网络新词汇.txt",
dictname="网络新词汇",dicttype=c("text"))
insterwords
# 插入停用词
stopwords
wordmessage
wordmessage
wordmessage
# 删除停用词
seg_word
# 统计词频
p
p=1]
p12)
wordcloud2(p1)
#分析用户发言时间点
user.time
user.time
user.time.hour
for(i in 1:length(user.time)){
user.time.hour[i]
}
hour
user.time.h
hour
hour
hour$hour
# 发言时间图:
library(ggplot2)
ggplot(data=hour,aes(x=hour,y=Freq,group=1))+geom_bar(stat='identity',fill="red")+geom_line(color="blue")+labs(main="QQ群发言时间")
# 看了都集中中午发言
# 进行热力图生成:
require(plyr)
time
time_table
time_table
day_m
heatmap(day_m,Rowv = NA,Colv = NA,scale="column",col=cm.colors(128),revC=TRUE)
# 1/2/3月份是发言高峰期
# 发言者统计
user.name
as.data.frame(table(user.name))->user.count
user.count.20
user.count.20
p
p+geom_bar(aes(x=reorder(user.name,Freq),y=Freq),stat="identity",fill="red")+coord_flip()
Peter是个积极分子。
本人也榜上有名啊
閱讀更多 阿國 的文章