linkinbird
我是新人,先报一下道:)
我在处理一批8万条的数据,刚开始用R
我的前期整理大致思路如下:
1、试了一下dist 聚类,内存不够Orz
2、被迫去掉所有A列(第3列)小于2的行,减少数据量。不过我比较原始:P
r = grep(0,matrix[,3]) 把0所在行选出来
matrix <- matrix[-r,] 把这些行删除
继续删除 含有数值为“1”的行
问题1、grep匹配好像是字符匹配,数字100也有零,也会被选出来,怎么办?
问题2、这样逐个数的删太傻了,我刚用R几天,还没找到其他方法,高人能指点一下吗?
3、删完以后,数据减少到2万条,还是内存不够Orz
4、抽样,看了前面高人的帖子,方法如下
rows=1:nrow(matrix) 把所有行标记
idx=sample(rows,5000) 抽样5000行
matrix <- matrix[idx,] 按抽样结果提取行数
5、终于内存够了
R 真是好东西,可惜我还处在手工作坊阶段
写这个数据清理还很粗糙,去掉异常点阿,填补空缺值啊都不会
大家一起交流一下吧:)
abel
1、聚类的时候数据量太大的话,先试用下kmeans;要是用dist的方法,可能要求计算机比较强悍
2、new.df <- subset(old.df, A>2)或者new.df <- old.df[old.df$A>2,],也许会提高一点速度
3、不知道“手工作坊”具体是什么含意——需要一个script的编辑器?
rtist
另外,不建议用matrix这样的名称,它们已经是其他函数的名称了。
linkinbird
谢谢你们,让我省了很多弯路
国庆愉快:)
yihui
还是indexing问题……
2、mat[mat[ ,3] != 0, ],你竟然想到了用grep()……欧啊贼,莫非是Linux用户