【R语言】批量合并Excel文件,并增加文件来源列
基本步驟:
獲取各個文件的完整路徑
批量讀取+按行合并+增加數據來源列
R語言代碼:
library(purrr) library(readxl)files = list.files("datas/", pattern = "xlsx", full.names = TRUE) df = map_dfr(set_names(files), read_xlsx, .id = "文件來源") writexl::write_xlsx(df, "學生成績.xlsx")運行結果(部分):
代碼解釋:
第1行:加載 purrr 包,用其中強大的循環技術;
第2行:加載 readxl 包,以讀取 Excel數據;
第3行:獲取 “data” 路徑下所有 xlsx 文件的完整(相對)路徑,得到所有文件路徑構成的字符向量;
第4行:將讀取 Excel 數據的 read_xlsx() 函數,應用到前面獲取的每個路徑,即實現批量讀取;同時 map_dfr() 帶后綴 _dfr 就是指明了映射之后返回按行合并的數據框;set_names() 是將文件路徑字符向量創建為命名向量,再結合參數 .id 將路徑值作為數據來源列;
第5行:將合并后的數據,寫出到 Excel 文件,writexl:: 是包名前綴,節省一行代碼。也可以用 openxlsx 包,讀寫函數都有。
注1:list.files() 函數帶 recursive 參數,若設置為 TRUE,則 Excel 數據文件,嵌套在多個文件夾中也沒問題。
注2:如果是操作 xls 文件,改用 read_xls() 函數即可;如果是 操作 csv 文件,改用 readr::read_csv() 函數即可。
如果 Excel 數據是在一個 xlsx 文件的多個 sheet,怎么辦呢?
R語言代碼:
代碼解釋:
第3行:path 存放 Excel 文件路徑;
第4-5行:excel_sheets() 函數作用在該 Excel 文件上,提取各個 sheet名字,得到字符向量;然后同樣是實現批量讀取,只是這次是在 sheet 名字的字符向量上循環而已。
注:6行代碼,實際上是函數有點長寫成2行,另外,這次是用 sheet 列來存放數據是來源自哪個 sheet.
總結
以上是生活随笔為你收集整理的【R语言】批量合并Excel文件,并增加文件来源列的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 15.unsafe类的CAS是怎么保证原
- 下一篇: 冒泡机制