2017-05-26 63 views
0

我試圖把一個Word文檔的數據不在表中,並將其製作成表格。有數百個相同的單詞文檔,我想編寫一個腳本,可以將這些數據存入表格。1列包含標題和數據,如何使它成爲多個

我的第一個想法是將它全部轉換成一列,然後我可以以某種方式拉出列標題並組織它下面的數據。

的Word文件:https://github.com/cstaulbee/Operation-WordDoc/blob/master/Sanitized_sampe.docx

library(docxtractr) 


filenames <- list.files(".", pattern="*.docx", full.names=TRUE) 
docx.files <- lapply(filenames, function(file) read_docx(file)) 

idx <- 1 
docx.tables <- lapply(docx.files, function(file) { 

    ifelse(dir.exists("Contents"), { 
    unlink("Contents", recursive=T, force=T) 
    dir.create("Contents") 
    }, { 
    dir.create("Contents") 
    }) 

    filename <- filenames[idx] 
    idx <- idx + 1 

    tbl <- docx_extract_tbl(file, 1) 
    file.copy(filename, "Contents\\word.zip", overwrite=T) 
    unzip("Contents\\word.zip", exdir='Contents') 
    x <- xml2::read_xml("Contents\\word\\document.xml") 
    nodes <- xml2::xml_find_all(x, "w:body/w:p/w:r/w:t") 
    data.date <- paste(xml2::xml_text(nodes, trim=T), collapse="::") 
    word_df <- strsplit(gsub("[:]{1,}", ":", txt), ":") 
    return(
    list(
     date=data.date 
    ) 
) 
}) 

word_df <- strsplit(gsub("[:]{1,}", ":", docx.tables), ":") 

此轉換的Word文檔到一個壓縮文件,然後把它讀成一個XML。它提取不在表格中的信息,然後將其全部放入可以被操縱的列表中。

我想知道是否有人知道採取這一列的方法,並根據數據將其製作成幾列。例如,Date,Time in,Pilot和Assistants將在列中出現3次或幾次,但我希望每個列都是自己的列,它們之間的數據和下一個列標題是數據上行。

所以基本上它看起來像這樣:

df_col 
Date 
2/ 
2/16 
Pilot 
John, Mark 
Assistants 
Alfred, James 

但我希望它看起來像這樣

Date_col Pilot_col Assistants_col 
2/22/16 John, Mark Alfred, James 

除非有人有這樣做的更好的辦法的想法。

回答

0

您可以使用officer放棄你的DOCX文檔:

library(officer) 
doc <- read_docx(path = "Sanitized_sampe.docx") 
docx_summary(doc) 

enter image description here

最後一步將是正則表達式text時CONTENT_TYPE == 「款」。

相關問題