日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

【R语言】批量合并Excel文件,并增加文件来源列

發布時間:2023/12/20 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【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語言代碼:

    library(purrr) library(readxl)path = "原始學生成績.xlsx" df <- map_dfr(set_names(excel_sheets(path)), ~ read_xlsx(path, sheet = .), .id = "sheet") writexl::write_xlsx(df, "學生成績.xlsx")

    代碼解釋:

    第3行:path 存放 Excel 文件路徑;

    第4-5行:excel_sheets() 函數作用在該 Excel 文件上,提取各個 sheet名字,得到字符向量;然后同樣是實現批量讀取,只是這次是在 sheet 名字的字符向量上循環而已。

    :6行代碼,實際上是函數有點長寫成2行,另外,這次是用 sheet 列來存放數據是來源自哪個 sheet.

    總結

    以上是生活随笔為你收集整理的【R语言】批量合并Excel文件,并增加文件来源列的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。