【Tidyverse優(yōu)雅編程】:批量word文檔轉(zhuǎn)Excel,吊打Python可還行?

問題來自頭條文章:
www.toutiao.com/article/7170606479974646284/?log_from=5f6d1680db622_1669688728187
他們總說,R 語言處理文本數(shù)據(jù)、自動化辦公不行,是真不行嗎?本篇就來個?吊打 Python?看看。

1 問題描述
有多個 word 文檔:

文檔內(nèi)容:


需求:
批量讀取 word 文檔內(nèi)容,按名目:序號、方名、組成、用法、主治、備注,整理成 Excel 表格,結(jié)果如下:

注:若未包含【組成】【用法】【主治】,則內(nèi)容都?xì)w入備注。
2 解決問題
首先強(qiáng)調(diào):文本數(shù)據(jù)處理,肯定離不開正則表達(dá)式!
加載包
批量讀取 word 文檔

得到的結(jié)果是數(shù)據(jù)框,每個文檔占一行,doc_id
?列是文件名,text
?列是文檔內(nèi)容,一個文檔內(nèi)容整個是一個字符串。
按藥方切分列

此時,一個藥方占一行了。
解決一個藥方的信息提取,寫成函數(shù)
說明:都是正則表達(dá)式提取,主要用到零寬斷言,根據(jù)兩端標(biāo)志提取中間想要的內(nèi)容。為什么看著這么啰嗦呢?是因?yàn)閿?shù)據(jù)是有陷阱的:不是每個藥方都包含【組成】、【用法】、【主治】,所以右端需要設(shè)置為下一項(xiàng)或結(jié)尾標(biāo)志$
。
測試一個看看:

沒問題?。ㄎ也铧c(diǎn)被對不齊給騙了)
循環(huán)迭代,批量解決問題
就是把函數(shù)?f?
依次應(yīng)用到數(shù)據(jù)的?text
列,結(jié)果按行合并:
寫出到 Excel 文件
結(jié)果就是問題描述中的結(jié)果表(略)。
問題解決!
以上是為了給大家展示中間過程,方便大家理解。拿掉不必要的中間過程,借助管道,完整代碼如下:
附錄
我主張的數(shù)據(jù)編程思維:

我的R語言新書:《R語言編程—基于tidyverse》

電子搶讀版已上線(人郵)異步社區(qū),紙質(zhì)版預(yù)計(jì)12月底上市:
《R語言編程:基于tidyverse》電子搶讀版購買地址:
https://www.epubit.com/bookDetails?id=UB7db2c0db9f537&tabName=%E6%8A%A2%E8%AF%BB%E7%89%88&floorName=%E7%B2%BE%E9%80%89%E7%BA%B8%E4%B9%A6
【Tidyverse優(yōu)雅編程】:批量word文檔轉(zhuǎn)Excel,吊打Python可還行?的評論 (共 條)
