處理大批量文本數(shù)據(jù)_第1頁
處理大批量文本數(shù)據(jù)_第2頁
處理大批量文本數(shù)據(jù)_第3頁
處理大批量文本數(shù)據(jù)_第4頁
處理大批量文本數(shù)據(jù)_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

如何批量處理文本文件最近數(shù)據(jù)堂為了弄數(shù)據(jù)挖掘比賽提供了一批用戶行為日志數(shù)據(jù)。對于以前沒玩過的數(shù)據(jù),我是特別的好奇。處理這批文本文件確實花了不少時間。數(shù)據(jù)以不同的日期作文件夾分別存放,每個文件夾中又有近一千個文本文件,每個文件都是一個用戶的行為日志。為了分析這些數(shù)據(jù),首先需要將這兩萬個文本文件讀入R中,再用字符串函數(shù)進行處理成結(jié)構(gòu)化的數(shù)據(jù)。處理方法如下:library(stringr)setwd('D:\\kaggle\\tang\\data')data<-read.table('data.csv',T,sep=',')#讀入文檔地址path<-'D:\\kaggle\\tang\\data\\behavior'<-dir('D:\\kaggle\\tang\\data\\behavior')<-list()fre<-numeric()for(iin1:length())(doc.nam[[i]]<-dir(paste(path,[i],sep='\\'))fr[i]<-length([[i]])}dir<-rep(,fre)<-unlist()<-character()for(iin1:length(dir))(file.nam[i]<-paste(path,dir[i],[i],sep='\\')}#建立抽取主函數(shù),返回列表data.get<-function()(#獲取文本temp<-readLines(,encoding='UTF-8')if(length(temp)<=2)return(NA)#用戶編號id<-str_matc(,"[A-Z0-9]{32}")#調(diào)查日期day<-str_matc(,"\\d+■-\\d+■-\\d+")#開機時點clock<-str_sU(str_match(,'_\\d{2}-'),2,3)#切分轉(zhuǎn)換文本函數(shù)trans〈一function(x){res<unlist(str_split(x,"\\[=\\]|<=>"))#res<-str_extract(x,"L<=>]+\\.[a-z]+")return(res)}#將文本切開轉(zhuǎn)為列表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<-resul[-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')#使用的軟件個數(shù)numofsoft<-nrow(progtime)#真實使用時長realtime<-sum(progtime$time,na.rm=T)return(list(id=as.character(id),day=as.character(day),clockas.numeric(clock),opentime=opentime,numofsoft=numofs,ftrealtime=realt,iprogtime=progtime))}所有的文件名都已經(jīng)存在變量中,用上面建立好的函數(shù)data.get來提取第一份文件中的信息>data.get([[1]])$id[1]"0143692D264FD906F10B8ECAB0F139D1”$day[1]"2012-05-07"$clock[1]12$opentime[1]7771$numofsoft[1]9$realtime[1]7610$progtimeprogratime360chrome.exe1237360leakfixer.exe3

3360Safe.exe124360sd.exe205explorer.exe5106iexplore.exe54737liveupdate.exe68popup_QQ.exe449QQ.exe305通過電子郵件發(fā)送BlogThis!共享給Twitter共享給Facebook標(biāo)簽:數(shù)據(jù)預(yù)處理7條評論:TracySu11/26/201211:19下午好文!

AmeenZhao12/05/201212:45上午如果只是讀取txt文件,能否用read.table一次性引入R?比如:路徑是c:/RCODE,文件是file1.txtfile2.txt, ,file100.txt.回復(fù)寫長城的詩12/05/20128:33上午應(yīng)該要寫一個循環(huán)吧

匿名12/07/20122:17下午像這種大量卻簡單的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論