上期题目:http://www.dataanalysis.cn/alchemist/alchemist.html
哈喽,大家好:
好几天不见了,这次我堂堂炼金术士Razzil Darkbrew要求得,自己写答谢。可能有朋友不太清楚,我上次获得的任务是QQ群聊天记录分析。你们都知道,我才来到人类世界,还不太熟络,因此那个问题对我来说太难了!幸亏有大家帮忙,我能顺利、及时的完成任务。首先,我不得不分享一下英雄榜和他们的炼金积分(炼金积分是Abbo给我的,他说以后可能有用,管他呢!):
这些都是帮助过我的英雄们,我Razzil衷心的感谢你们,下面,我要将你们贡献的知识转换为炼金武器——R的使用秘籍送予我的英雄们:
<br />
plyr包,拆分、合并数据的利器,是一个工具集合;<br />
包中ddply()函数可以实现类似于SQL中select group by功能<br />
stringr包,轻轻松松处理字符串<br />
好吧,可能其中有一些冗长代码的方法,融合了很多让我头晕的东西,比如循环+循环+循环+……我想那位侠士肯定也没有弄得太清楚上古神器R的使用技巧,我就不点名让您出丑了!</p>
挑一个我最喜欢的来分析一下吧:
--------------------------------------------------------------------------------
<br />
qq=read.csv("http://www.dataanalysis.cn/doc/a/1/qq.csv",header=T,sep=",",as.is=T)<br />
#发言次数TOP10<br />
rev(sort(table(qq$id)))[1:10]<br />
#发言天数TOP10<br />
rev(sort(tapply(as.Date(qq$time),qq$id,FUN=function(x){length(table(x))})))[1:10]<br />
---------------------------------------------------------------------------------</p>
读入数据,as.is=T将字符型 变量转换为因子(为后面铺垫哦!);
rev()倒序+sort()排序+table()创建按照id因子的汇总统计(table()函数用于创建交叉表,很强大!);
tapply()在多维数组中应用function(x),function(x)即{length(table(x))},按照as.Date(qq$time)因子的汇总统计,qq$id为索引变量;
嗯…看完这么多,你学习到了吗?如果你还对其中一些代码和方法有疑问的话,那就烦请自己下载包,并且使用help(function)来查查函数的帮助吧!
呃,这一次的任务就算是完成了!总而言之,非常感谢大家的帮助,下一期任务什么时候?卖糕的!我得问问Abbo,希望不要太难,但是我爱挑战,英雄们你们也是吧!
Yours
Razzil Darkbrew
所有代码下载:http://www.dataanalysis.cn/doc/a/1/a1.r
----------------------------------------------------------------------------------
囧,写惯了html,我说怎么一直写不出图片。。。