在R中,summary()是一個基礎包中的重要統計描述函數,同樣的在dplyr中summarise()函數也可以對數據進行統計描述。
不同的是summarise()更加的靈活多變,下面來看下summarise這個函數
summarise(.data, ...)
其靈活性和其他dplyr函數一樣,主要在於條件的使用上
下面看些具體的例子
library(dplyr) x<-data.frame(id=1:6, name=c("wang","zhang","li","chen","zhao","song"), shuxue=c(89,85,68,79,96,53), yuwen=c(77,68,86,87,92,63)) x
summarise(x,sum(shuxue))
可以很好的配合聚合函數一起使用
summarise(group_by(x,name),sum(shuxue))
這里由於每個name對應的shuxue只有一個參數,所以sum的結果沒變化。
summarise(group_by(x,name),sum(shuxue,yuwen))
可以看出shuxue和yuwen求和后的數據。
arrange(summarise(group_by(x,name),qiuhe=sum(shuxue,yuwen)),desc(qiuhe))
配合上前面的函數,就可以對求和后的數據進行排序,當然上面數據的可讀性較低。
把他分為兩個步驟,理解起來可能會相對比較容易。
y<-summarise(group_by(x,name),qiuhe=sum(shuxue,yuwen)) 求和過程
arrange(y,desc(qiuhe)) 排序過程
summarise(x,mean(shuxue),sd(shuxue))
求均值和方差
summarise(group_by(x,name),a=n(),b=a+2)
配合你n()可以對每個因子的出現次數進行統計。
summarise_all(group_by(x,name),mean)
對所有列按照name分組后求平均值
summarise_if(x,is.numeric,mean)
對所有是數值的列求平均值
summarise_at(x,c(3,4),mean)
對特定的列求平均值
類似結果的表達方式有:
summarise_at(x,vars(shuxue,yuwen),mean)
summarise_at(x,c("shuxue","yuwen"),mean)
summarise_all(select(x,c(1,3,4)),funs(min,max,mean,sum,sd))
使用funs,對數據進行多重聚合統計。
summarise_each(x[c(1,3,4)],funs(mean,sum))
summarise_each也可以達到類似的效果。