[英]How to apply function over columns of matrix by multiple factors in R?
這是一個簡單的問題,我相信可以通過輕按,應用或按以下方式輕松解決。但是,我對此還比較陌生,我想請教一下。
問題:
我有一個包含5列的數據框。 例如,第4列和第5列是因素。 對於第5列中的每個因子,我想對第5列中的每個組的第1:3列執行一個函數。從原理上講,這很容易實現。 但是,我想將輸出作為一個漂亮的表,並且我想學習如何以一種優雅的方式進行操作,這就是為什么我想在這里問你。
例:
df <- data.frame(x1=1:6, x2=12:17, x3=3:8, y=1:2, f=1:3)
現在,命令
by(df[,1:3], df$y, sum)
會根據y
每個因子水平給我總和,這幾乎是我想要的。 需要執行兩個附加步驟:一個是針對f
每個因子水平執行此操作。 這幾乎是微不足道的。 我可以輕松地在上面的命令周圍包裹lapply
,得到我想要的東西,除了:我想用結果生成一個表,甚至可以用它來生成熱圖。
因此:有沒有一種簡單且更優雅的方法來執行此操作並生成具有相應輸出的矩陣? 對於數據科學家來說,這似乎是一項日常任務,這就是為什么我懷疑存在現有的內置解決方案的原因...
感謝您的幫助或提示,無論大小如何!
您可以使用reshape2
和plyr
軟件包來完成此操作。
library(plyr)
df2 <- ddply(df, .(y, f), sum)
然后將其通過y矩陣轉換為af:
library(reshape2)
acast(df2, f ~ y, value.var = "V1")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.