【求助帖,分享讨论之】
很久之前就希望拿图书馆的借阅数据开刀了,我这里抛开业务话题,直接请求各位帮忙讨论技术细节。
数据库是mysql,统计分析软件是R
我拿到的图书馆借阅数据,经过处理后有:
time , book_code , book_class , reader_code , reader_level , reader_major
分别是:
借阅时间 , 图书编码 , 图书分类 ,读者代码 , 读者年级 , 读者专业
(注:图书分类是从图书编码中衍生出来的,读者年级、读者专业也是从读者代码中衍生出来的)
所以,实际的原始数据是(三个字段,行数约为百万)
time , book_code , reader_code
t1 , book1 , reader1
t2 , book2 , reader2
t3 , book3 , reader3
.
.
.
但是现在希望使用R来进行关联规则(暂时准备使用apriori算法,arules包)
经过翻阅,似乎这个包里提供的数据案例都是要求:
reader_code , book_code1 , book_code2 ......
reader1 , book1 , book2 ...
reader2 , book3 ...
.
.
.
现在遇到的问题是:
1.借阅数据有重复(一本书在一年内反复借阅多次,需要去重)
2.借阅数据有多有少,多的达到300+,少的是1(如果按照上述数据要求,就得建立300+个字段,然后将数据转换【做过数据库设计的朋友一定会嘲笑这种做法吧,两种数据本质上是一样的啊】)
3.数据的熵值应该很高吧(啧啧,找不到好词,我想表达的是,总书目几百万,一千个读者就有一千个哈姆雷特。。。)
现在我想到的解决思路是:
1.直接建立一个新表,建立300+字段,将数据进行转换,然后放到R里做;
缺点:且不论数据形式不太合理(300+个字段啊尼玛),重点是后续的维护,优化我的分析都难以做。比如我想筛选出 经济系的同学阅读情况再做一次关联规则,我又得重复以上方式。。。
2.找一种方式,在R中能直接做数据转换(好像arules包是不提供这样功能,也有查RMySQL包,但是只能运行于OS X上啊),这样不但不会出现300个字段的数据库,也方便我后续的反复分析,以达到最优的分析效果。。。
问题来了:我能否把这个 ETL (应该称之为ETL了吧)过程在R和MySQL中实现呢?