2015-04-22 83 views
2

我有大約300個csv風速,溫度,壓力等列的文件,每行與2007年至2012年不同。每個文件來自不同的位置。我想將所有文件合併爲一個,即所有300個文件的平均值。因此,新文件將具有相同數量的每個單獨文件的行和列,但每個單元格將是所有300個文件的相應平均值。是否有捷徑可尋?將多個csv文件平均放入r中的1個平均文件中

+0

[導入多的.csv文件到R]的可能重複(http://stackoverflow.com/questions/11433432/imports-multiple-csv-files-into-r) – Metrics

+1

@Metrics鏈接的帖子並不能解決問題,因爲它沒有解決如何在讀入列表後如何對所有csvs進行平均。 – josliber

回答

4

this post,你可以閱讀所有的文件到列表中(這裏我認爲他們命名天氣*的.csv):

csvs <- lapply(list.files(pattern="weather*.csv"), read.csv) 

剩下的工作就是把所有這些的平均數據幀。你可以嘗試這樣的:

Reduce("+", csvs)/length(csvs) 

如果你想只添加列的一個子集,你可以通過Reduce與列的適當子集數據幀的列表。舉例來說,如果你想從每個除去第一列,你可以這樣做:

Reduce("+", lapply(csvs, "[", -1))/length(csvs) 
+0

Thad做到了Josilber。我有點驚訝沒有更自動的東西,但這個解決方案很好。謝謝你的幫助! – user3687879