受到R会议5th某个slide对QQ群聊天记录挖掘的启发,把总计4万多行时间跨度从2012年3月到11月的Hi群的聊天记录下载为一个txt文档然后用awk ‘{if($0 ~ /^2012-/) print $1,$2”|”$3;}’ 处理了一下得到1万3千多行的sf_chat.txt,注意这里为了后面读取方便打印用|间隔,格式为 2012-03-30 17:51:33|春娇 2012-03-30 17:51:40|志明 2012-03-30 17:51:54|春娇 2012-03-30 17:52:05|志明 … 然后用如下R代码再处理一下,图穷匕见。 1.聊天能手:无需多言,上班时间不好好工作是也。 2.聊天杀手:话一出群内至少安静半小时以上,加上发言频率作为惩罚则是必杀率。 2.最佳好基友:谁回复谁最多或者连续发言相邻最多的。
#数据读取
sf_chat <-read.delim("E:/workspace/sf_chat.txt",
col.names = c("time","name"),
sep = "|",
header = F,
stringsAsFactors = F)
#数据清洗
sf_chat <- sf_chat[nchar(sf_chat$time)==19,]
sf_chat$second <- as.numeric(as.POSIXct(sf_chat$time))
#会话统计
begin <- end <- NULL
for(i in 1:nrow(sf_chat))
{
if(i>1&&i<nrow(sf_chat)){
if((sf_chat$second[i+1]-sf_chat$second[i])>1800){
end <- c(end, sf_chat$name[i])
begin <- c(begin, sf_chat$name[i+1])
}
}
}
#聊天能手
sort(table(sf_chat$name),decreasing=T)[1:10]
#聊天杀手
sort(table(end),decreasing=T)[1:10]