caolong2019年4月14日aggregate函數(shù)應(yīng)該是數(shù)據(jù)處理中常用到的函數(shù),簡(jiǎn)單說有點(diǎn)類似sql語言中的group by,可以按照要求把數(shù)據(jù)打組聚合,然后對(duì)聚合以后的數(shù)據(jù)進(jìn)行加和、求平均等各種操作。x=data.frame(name=c("張三","李四","王五","趙六"),sex=c("M","M","F","F"),age=c(20,40,22,30),height=c(166,170,150,155))
x
## name sex age height
## 1 張三 M 20 166
## 2 李四 M 40 170
## 3 王五 F 22 150
## 4 趙六 F 30 155
aggregate(x[,3:4],by=list(sex=x$sex),FUN=mean)
## sex age height
## 1 F 26 152.5
## 2 M 30 168.0
knitr::opts_chunk$set(echo = TRUE)
我們可以調(diào)整x之后的參數(shù)來表示后面函數(shù)作用的對(duì)象,by之后的必須是list,而且list里面的參數(shù)可以是一個(gè)或者好幾個(gè)。eg:sex=x$sex 表示新生成的數(shù)據(jù)有一個(gè)變量名為sex并且該變量的取值就是原來數(shù)據(jù)的sex這一列,而且這一列是不變的。我們可以重新調(diào)整list里面的參數(shù)看一下具體的變化如下所示aggregate(x[,3:4],by=list(name=x$name),FUN=mean)
## name age height
## 1 李四 40 170
## 2 王五 22 150
## 3 張三 20 166
## 4 趙六 30 155
knitr::opts_chunk$set(echo = TRUE)
我們可以重新調(diào)整list里面的參數(shù)增加至兩個(gè),看一下具體的變化如下所示aggregate(x[,3:4],by=list(name=x$name,sex=x$sex),FUN=mean)
## name sex age height
## 1 王五 F 22 150
## 2 趙六 F 30 155
## 3 李四 M 40 170
## 4 張三 M 20 166
knitr::opts_chunk$set(echo = TRUE)
幾個(gè)注意點(diǎn):1.字符或者factor類型的列不要一起加入計(jì)算,會(huì)報(bào)錯(cuò)2.by參數(shù)要構(gòu)造成list,如果有多個(gè)字段,by就對(duì)應(yīng)隊(duì)列,和group ##3.by多個(gè)字段是同樣的道理
|