考慮一個名爲listDF
的數據框列表。每個dataframes具有相同的欄目:跨列表中的數據框執行基本計算(總數的百分比)的最佳方式是什麼?
"Date" "Location" "V1" "V2"
其中V1是充滿了實數
我想計算總的百分比列說V1每個日期/位置組合。對於每個特定的日期/地點對,所有數據幀的和爲V1,然後計算每個V1觀測值對相關樣本的份額。
我已經試過:
我堆棧dataframes,因爲我不知道該怎麼做掃地,而無需通過數據幀/日期/位置組合,這顯然是低效的循環。
library(plyr)
aggregate <- rbind.fill(listDF)
ptt <- ddply(aggregate,.(Date,Location),transform, share= V1/sum(V1))
最後一行導致RStudio崩潰,並要求我開始一個新的會話。 FWIW,平均數據幀有50k行,列表總共有大約1M行。我應該使用prop.table
嗎?
在一個理想的世界中,我會在每個數據框中將百分比總數(ptt)作爲列,而不是單獨堆疊的數據幀,而這些數據幀之後我將不得不拆分。
*旁邊的問題:有沒有辦法選擇哪個列表元素的子集用於任何給定的ptt?我假定在我最初的問題中使用所有數據框,但願意根據V2的標準選擇。
感謝您的幫助。
讓你的問題重現的 – mtoto
「,而不是在一個堆疊的數據框中,我將不得不拆分。「你爲什麼要分裂它? R中的幾乎所有問題都可以通過堆棧數據輕鬆解決。順便說一句,dplyr已經在hadleyverse(即Hadley的包裹的宇宙)中取代了plyr。 – Frank
@Frank感謝您的評論,我將使用dplyr。我想維護數據框列表中的分割結構,主要是因爲當我嘗試上述方法時,會話會崩潰。起初我以爲這是一個內存問題(因爲它堆積爲1M +行),但我不認爲這是問題。最後,我希望能夠將每個數據幀導出到不同的文件中,但要注意不會妨礙在單個數據幀中進行實際分析。 – user4547611