dplyr 數據操作 統計描述(summarise)


在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也可以達到類似的效果。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM