受到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]