apply函数对行/列运算
apply(X,MARGIN,FUN,...) 對矩陣、數據庫、數組按行或列進行迭代計算,返回向量或數組或值列表。
X: 輸入的數組、矩陣,如果是數據框會自動轉換成矩陣
MARGIN:按行計算或按列計算,1表示按行,2表示按列。
FUN:調用函數名稱
...:為函數FUN提供額外參數。即如果一個函數有多個參數,那么...就是傳入除第一個參數意外的其他參數。
例子:
df<-data.frame(x=c("A","B","C","A","C"),'2010'=c(1,3,4,4,3),'2011'=c(3,5,2,8,9),check.names=FALSE)
df_rowsum<-apply(df[,2:3],1,sum) #對2、3列,采用按行計算。
df_colsum<-apply(df[,2:3],2,sum) # 采用按列計算
更多的apply函數家族參考:http://showteeth.tech/posts/15576.html
對數據框分組計算,用aggregate函數,~左邊表示待操作變量,~右邊表示依據。注:依據可以是一個或多個。
例子:
df_melt<-reshape2::melt(df,id.var="x",variable.name="year",value.name="value")
> da_group1<-aggregate(value~year,df_melt,mean) # 數據框df_melt,按year對變量value執行mean計算。
~右邊是多個時,則是右邊這些變量不同組合情況下的函數操作。
如:> df_group2<-aggregate(value~year+x,df_melt,mean)
~ 左邊是多個變量,表示待操作的是多個變量,這些變量分別依據~右側變量進行函數操作。
如> df_group3<-aggregate(cbind(value,year)~x,df_melt,mean)
對數據框分組計算與aggregate類似但更靈活的是通過dplyr包的groupby()分組,summarise()分組的匯總運算,arrange()分組的變量排序等組合實現與aggregate()類似功能。
常需要搭配%>%這個多步操作連接符。注:groupyby()常和summarise()搭配使用,后者需要前者分組功能。
例子:
> df_groupmean1<-df_melt%>%dplyr::group_by(year)%>% + dplyr::summarise(avg=mean(value)) #與aggregate(value~year,df_melt,mean)效果一致。
> df_groupmean2<-df_melt%>%dplyr::group_by(year,x)%>%dplyr::summarise(avg=mean(value))#與aggregate(value~year+x,df_melt,mean)效果一致。
本文來自博客園,作者:BioinformaticsMaster,轉載請注明原文鏈接:https://www.cnblogs.com/koujiaodahan/p/15359555.html
總結
以上是生活随笔為你收集整理的apply函数对行/列运算的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【转】《从入门到精通云服务器》第四讲—D
- 下一篇: 八大元素定位