plyr package

来源:互联网 发布:ubuntu实用软件 编辑:程序博客网 时间:2024/06/14 18:25

plyr包

data(tips,package=”reshape2”)#加载数据集

library(plyr)

head(tips)

基础函数汇总:

aggregate(x=tipstip,by=list(tipssex),FUN=mean)

plyr包函数

ddply(.data=tips,#拆分计算的对象    .variables="sex", #拆分的依据    .fun=function(x){  #计算的函数         mean(tips$tip)         })

ddply()函数,参一是分组的对象,参二是分组的依据,参数三是对分组计算的函数

函数命名规则
a:array d:data.frame l:list

plyr包的主要函数:**ply 首字母代表输入,第二个字母代表输出

如:adply()函数 输入数组,输出数据框

例:

data <- as.matrix(iris[,-5])result2 <- adply(.data=data,                 .margins=2,                 .fun=function(x){                   each(max,min,median,sd)(x)                 })

each()函数是在plyr包中,主要作用是合并多个函数成一个函数,返回一个向量

练习:

用iris数据,对每一种花做一个简单回归。

#定义回归函数
model <- function(x){
lm(Sepal.Length~Sepal.Width,data=x)
}
#对每一组花进行回归
models <- dlply(.data=iris,
.variables=”Species”,
.fun=model)
#计算每个模型的系数
result3 <- ldply(.data=models,
.fun=coef)

result3     Species (Intercept) Sepal.Width1     setosa    2.639001   0.69048972 versicolor    3.539735   0.86507773  virginica    3.906836   0.9015345

用普通函数对每一种花做简单回归,则需要做分割,计算,整合三个步骤

pieces <- split(iris,list(iris$Species))#因为lapply函数族的第一个参数是列表或向量models <- lapply(pieces,model)result <- lapply(models,coef)do.call("rbind",result)#整合回归结果结果:           (Intercept) Sepal.Widthsetosa        2.639001   0.6904897versicolor    3.539735   0.8650777virginica     3.906836   0.9015345

plyr包其他辅助函数:

上面提到的each函数
x <- rnorm(10)
each(max,min,mean,sd)(x)

colwise()函数对数据框的每一列进行计算,返回一个数据框
colwise(mean,is.numeric)(iris)#计算数值型的列

0 0
原创粉丝点击