2013-06-25 132 views
2

我在R中有一些列表,這是一組來自我爲數據挖掘的非結構化文檔的一行代碼。在每個頁面的頂部是一個頁碼,由字符串「page」和幾行標題信息繼續,我想刪除它們。從列表中刪除一行並將所有連續行刪除到N?

每個文檔都有不同數量的標題行。到目前爲止,我的解決辦法:

RawFeed.1<- grep("Page",RawFeed) 
RawFeed.1a<-length(RawFeed.1) 
RawFeed.1<-RawFeed.1[-1] 

注一審這裏丟棄,因爲第一頁總是有更多的標題行比頁及其後下降反正休息。

y<-RawFeed.1[1] 
ya<-c(y:length(RawFeed)) 

NSearch<-RawFeed[ya] 
NSearch.1<-grep("Start", NSearch) 
y1<-NSearch.1[1] 
y1<-y1-1 

y2<-c(0:y1) 

「開始」總是上線找到的數據開始之前,這一直給我的標題行的文件具體數目。

接着我嘗試將其刪除:

PageBreak <-function(y) { 
RawFeed<-RawFeed[-x-y] 
} 

RawFeedTemp<-lapply(RawFeed.1,PageBreak,y=y2) 

哪家做的工作,那種 - 我留下的陣列,使得RawFeedTemp[[n]]只有該頁面刪除標題信息。

那麼我該如何執行一個類似的操作,在這裏我剩下一個列表,其中每個頁面的標題信息已被刪除,或者是否有一種方法來組合數組中的元素,使其僅包含一組行,排除那些我想要刪除?

編輯:數據

[306] N 46 10/08/12 10/08/12 Stuff :30 NM 0 $0.00" 
[307] Week: 10/08/12 10/14/12 Other Stuff $6,500.00 0.00 
[308] " Contract Agreement Between: Print Date 10/05/12 Page 5 of 6"                                         
[309] ""                                                        
[310] ""                                                        
[311] " Contract/Revision Alt Order #"                                                
[312] " Person                                                     
[313] " Address 1                                                   
[314] " Address 2                                                    
[315] " Address 3                                         
[316] " Address 4                                         
[317] ""                                                        
[318] " Original Date/Revision"                                               
[319] ""                                                     
[320] "08/10/12/10/04/12"                                               
[321] ""                                                        
[322] ""                                                        
[323] ""                                                       
[324] "* Line Ch Start Date End Date Description Start 
[325] MORE DATA 

另一文件的例子,可能有不同數量的這些頭。另外請注意,記錄佔據多行,大多數文件在開始新頁面之前完成記錄,但少數人堅持將記錄的第二行推到新頁面,爲什麼我需要將它們全部刪除

感謝你的幫助!

回答

0

由於您沒有給出您的數據的明確例子,我不確定給定的解決方案。

如果我明白你有'頁面'和'開始'之間的部分(標題)的文檔,你想刪除。這裏有2頭數據的樣本:

str <- 'Page ......  ### header1 
alalalala 
lalalalalal 
aalalala 
lslslsls start ksksksks 
keep me 1 
keep me 2 
Page ......    ### header 2 
aalalala 
lslslsls start ksksksks 
keep me 3 
keep me 4' 

這裏我使用readLines讀文件,並找到利用grep標題行,並刪除加入從線列表行索引。

ll <- readLines(textConnection(str)) 
ids <- matrix(grep('Page|start',ll),ncol=2,byrow=TRUE) 
ll[-unlist(apply(ids,1,function(x)seq(x[1],x[2])))] 

[1] "keep me 1" "keep me 2" "keep me 3" "keep me 4" 
+0

謝謝你,像一個魅力工作 – user2520179