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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

r语言读取excel数据_R语言操纵Excel进行数据透视与批处理

發布時間:2024/9/19 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 r语言读取excel数据_R语言操纵Excel进行数据透视与批处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者:黃天元,復旦大學博士在讀,熱愛數據科學與開源工具(R),致力于利用數據科學迅速積累行業經驗優勢和科學知識發現,涉獵內容包括但不限于信息計量、機器學習、數據可視化、應用統計建模、知識圖譜等,著有《R語言數據高效處理指南》(《R語言數據高效處理指南》(黃天元)【摘要 書評 試讀】- 京東圖書,《R語言數據高效處理指南》(黃天元)【簡介_書評_在線閱讀】 - 當當圖書)。知乎專欄:R語言數據挖掘。郵箱:huang.tian-yuan@qq.com.歡迎合作交流。

最近接到一個任務,需要把保存在Excel表格多工作表的數據讀取出來,然后再進行各種清洗、處理和計算(如長寬轉換、根據公式進行計算、統一雜亂無章的存儲格式等)。一個工作簿中有80多個工作表,每個工作表有自己的名稱,第一行有題目,第二行有中文標注,第三行有英文縮寫碼...如果直接用交互式操作肯定是崩潰的,估計一個月都不一定能做完。數據量不能說大,每張工作表也就8000+行,沒有一個表格是破萬的(事實上綜合所有表格數據最后統計總共有76000+條數據)。

為了完成這個任務,就不得不先讀取所有Excel中的信息,包括工作表名稱、題目、每個表格的所有列都是什么(不知道就沒法計算)。讀取Excel的話,這次用了realxl包,還是比較好用的。可以參考以下鏈接:

CRAN - Package readxl?cran.r-project.org

之所以用了它,是因為我手里的Excel表格不僅有xlsx格式的,還有xls格式的。如果工作表不多,可以轉換一下,統一用openxlsx包,但是讀取的時候使用一下還是很便捷的。

能夠讀取之后,后面所有的設計當然還是使用tidyverse生態系統來完成,幾乎沒有無法完成的任務,但中間還是遇到了很多難題,不斷卡殼。比如時間的轉化,發現時間的格式不統一,有的要使用lubridate包來做,有的時候則需要用janitor包來做,最后還要吧兩者的結果合并起來,如下圖所示:

還有在時間上原始表格使用0時作為標準,但是規范化的結果表則需要使用24小時坐標標準,于是我只好把0換成24,但是日期要減少1天:

因為數據特別雜亂,根本無法設置通用函數來處理一切,為批處理帶來了巨大的挑戰。其中,使用匯總函數(max/min/mean)需要忽略缺失值,為了少寫一些na.rm = T,我參考了SO的內容,進行了全局設置。此外,還需要認為定義上旬、中旬、下旬(case_when),并對組內的數據再次進行分組匯總:

在summarise函數中使用by函數可以繼續匯總,不過要保證匯總之后你還需要繼續匯總,因為summarise函數最終只能夠返回一個值。同樣,使用方括號的方法也能夠實現定制化的組內匯總。

最后不能不提的是,必須要把處理好的數據再次導入到多工作表的Excel中,這個任務我在以前都還是先導出為csv文件然后再復制粘貼的,但是這次的工作量太大,顯然是不實際的。這時候我花了一點時間認真地學了一下openxlsx這個包,僅僅幾個函數,就讓這個任務變得便捷無比。鏈接如下:

CRAN - Package openxlsx?cran.r-project.org

這個包近一個月被下載20萬+次,不是開玩笑。我主要用到了以下三個函數:

  • loadWorkbook(讀取)
  • writeData(寫入工作表)
  • saveWorkbook(保存)

就是這么簡單的幾個函數,威力卻極為巨大。對于xlsx文件來說,openxlsx無疑已經登峰造極了,不依賴Java,使用Rcpp加速。不過因為我要進行多次存取,對Excel文件的存取依然是相對費時的,建議使用二進制來進行讀取,我這里用了readr包的的read/write_rds函數進行工作簿對象的讀寫。內存占用會稍微大一點(對于計算機來說空間沒有時間重要),但是讀寫速度會非常快。

對于需要使用Excel進行批處理的小伙伴,這里強推openxlsx這個包,能夠對多工作表的工作簿進行批量化讀入寫出,過程可以說是具備半自動化智能,真乃神器!

總結

以上是生活随笔為你收集整理的r语言读取excel数据_R语言操纵Excel进行数据透视与批处理的全部內容,希望文章能夠幫你解決所遇到的問題。

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