处理大批量文本数据(完整版).docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
如何批量处理文本文件最近数据堂为了弄数据挖掘比赛提供了一批用户行为日志数据。对于以前没玩过的数据,我是特别的好奇。处理这批文本文件确实花了不少时间。数据以不同的日期作文件夹分别存放,每个文件夹中又有近一千个文本文件,每个文件都是一个用户的行为日志。为了分析这些数据,首先需要将这两万个文本文件读入R中,再用字符串函数进行处理成结构化的数据。处理方法如下:library(stringr)setwd(D:\\kaggle\\tang\\data)data - read.table(data.csv,T,sep=,)?# 读入文档地址path - D:\\kaggle\\tang\\data\\behaviordir.name - dir(D:\\kaggle\\tang\\data\\behavior)doc.name - list()fre - numeric()for(i in1:length(dir.name)){ doc.name[[i]]- dir(paste(path,dir.name[i],sep=\\)) fre[i] - length(doc.name[[i]])}dir - rep(dir.name,fre)doc.name -unlist(doc.name)file.name - character()for( i in1:length(dir)){ file.name[i] - paste(path,dir[i],doc.name[i],sep=\\)}?# 建立抽取主函数,返回列表data.get - function(file.name){#获取文本 temp - readLines(file.name,encoding=UTF-8)if(length(temp)=2)return(NA)# 用户编号 id - str_match(file.name,[A-Z0-9]{32})# 调查日期 day - str_match(file.name,\\d+-\\d+-\\d+)# 开机时点 clock -str_sub(str_match(file.name,_\\d{2}-),2,3)# 切分转换文本函数 trans - function(x){ res - unlist(str_split(x,\\[=\\]|=))# res - str_extract(x, [^=]+\\.[a-z]+)return(res)}# 将文本切开转为列表 result - lapply(temp,trans)?# 开机时长 opentime - as.numeric(result[[1]][2])# 先进行时间分析,由于有的信息不是按顺序排列,所以要按时点重排# 时点抽取time - unlist(lapply(result[-c(1:2)],function(x) x[2]))time - as.numeric(time)# 时点排序,然后重排result列表 new.res - result[-c(1:2)][order(time)]?# 返回用户使用的程序向量 prog - unlist(lapply(new.res,function(x) x[4]))# 各程序使用时间time - unlist(lapply(new.res,function(x) x[2]))time - as.numeric(time)time[length(time)+1] - opentimetime - diff(time)? prog.time - data.frame(prog=prog,time=time) progtime - dcast(prog.time,prog~.,sum,value.var=time)names(progtime) - c(program,time)?# 使用的软件个数 numofsoft - nrow(progtime)# 真实使用时长 realtime - sum(progtime$time,na.rm=T)return(list(id=as.character(id),day=as.character(day), clock = as.numeric(clock),opentime=opentime, numofsoft = numofsoft, realtime= realtime,progtime=progtime))}所有的文件名都已经存在file.name变量中,用上面建

文档评论(0)

187****5045 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档