您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 会议纪要 > R七种武器之数据加工厂plyr包
R七种武器之数据加工厂plyr讲师何翠仪钟健聪DATAGURU专业数据分析社区R七种武器之数据加工厂plyr包第2课R七种武器之数据加工厂plyr讲师何翠仪钟健聪DATAGURU专业数据分析社区辅助函数辅助函数:以函数作为输入,以新的函数作为输出splat()函数each()函数colwise()函数failwith()函数arrange()函数rename()函数count()函数match_df()函数join()函数R七种武器之数据加工厂plyr讲师何翠仪钟健聪DATAGURU专业数据分析社区splat()函数作用:与使用众多的参数不同,该函数把原函数中多个参数打包为一个list作为参数,然后输出新的函数优点:当你想把数据框或者数组里的一行的数据作为参数赋给一个函数,用splat()函数就可以省去人为把数据框拆分的麻烦例子head(mtcars,5)hp_per_cyl-function(hp,cyl,...)hp/cylsplat(hp_per_cyl)(mtcars[1,])splat(hp_per_cyl)(mtcars)splat()函数R七种武器之数据加工厂plyr讲师何翠仪钟健聪DATAGURU专业数据分析社区m*ply(a_matrix,FUN)的作用和a*ply(a_matrix,1,splat(FUN))一样例子data=data.frame(n=c(10,100,50),mean=c(5,5,10),sd=c(1,2,1))datamlply(data,rnorm)alply(data,1,splat(rnorm))splat()函数R七种武器之数据加工厂plyr讲师何翠仪钟健聪DATAGURU专业数据分析社区each()函数each(.fun)作用:用一系列的函数作用在输入的数据上,并返回一个已命名的向量不足:不能给作用的函数指定附加的参数例子:fun-function(x)c(min=min(x),max=max(x),mean=mean(x))与each(min,max,mean)的作用相同a=c(1,2,3,4,1,5,7,8,9,4,2)each(min,max,mean)(a)each(length,mean,var)(rnorm(100))fun-function(x)c(min=min(x),max=max(x),mean=mean(x))fun(a)R七种武器之数据加工厂plyr讲师何翠仪钟健聪DATAGURU专业数据分析社区colwise()函数colwise(.fun,.cols,…)作用:把作用于数据框行向量的函数(如mean,median)转化为作用于数据框列向量的函数,可以结合baseR的函数使用,与d*ply一起使用时十分方便参数:.fun是要转化的函数;.cols可以是测试数据框的列是否应包含的判别函数或者是·要包含的列的名称另外还有衍生的catcolwise()和numcolwise()函数,它们分别针对的是函数只在离散和数值型的变量上操作R七种武器之数据加工厂plyr讲师何翠仪钟健聪DATAGURU专业数据分析社区例子:统计baseball各列向量的缺失值个数require(plyr)head(baseball,5)nmissing=function(x)sum(is.na(x))colwise(nmissing)(baseball)f=colwise(nmissing)f(baseball)colwise()函数R七种武器之数据加工厂plyr讲师何翠仪钟健聪DATAGURU专业数据分析社区ddply(baseball,.(year),colwise(nmissing))ddply(baseball,.(year),colwise(nmissing,.(sb,cs,so)))ddply(baseball,.(year),colwise(nmissing,c(sb,cs,so)))ddply(baseball,.(year),colwise(nmissing,~sb+cs+so))colwise()函数R七种武器之数据加工厂plyr讲师何翠仪钟健聪DATAGURU专业数据分析社区colwise()函数R七种武器之数据加工厂plyr讲师何翠仪钟健聪DATAGURU专业数据分析社区ddply(baseball,.(year),colwise(nmissing,is.character))ddply(baseball,.(year),colwise(nmissing,is.numeric))ddply(baseball,.(year),colwise(nmissing,is.discrete))ddply(baseball,.(year),numcolwise(nmissing))ddply(baseball,.(year),catcolwise(nmissing))colwise()函数R七种武器之数据加工厂plyr讲师何翠仪钟健聪DATAGURU专业数据分析社区failwith()函数failwith(default=NULL,f,quiet=FALSE)作用:修正一个函数,使得当该函数出现错误时返回一个默认值参数:default;f是要修正的函数;quiet是设定错误信息是否显示,默认值为FALSE,为显是设定要返回的默认值示错误信息R七种武器之数据加工厂plyr讲师何翠仪钟健聪DATAGURU专业数据分析社区f=function(x)if(x==1)stop(Error!)else1f(1)f(2)safef=failwith(NULL,f)safef(1)safef(2)safef=failwith(NULL,f,quiet=TRUE)safef(1)safef(2)failwith()函数R七种武器之数据加工厂plyr讲师何翠仪钟健聪DATAGURU专业数据分析社区arrange()函数arrange(df,.(var1),.(var2)…)作用:按照列给数据框排序参数:df为数据框;.var是要按照排序的变量R七种武器之数据加工厂plyr讲师何翠仪钟健聪DATAGURU专业数据分析社区例子:让mtcars数据集里面的车子按照气缸和排量排序mtcarsarrange(mtcars,cyl,disp)Arrange(mtcars,disp,cyl)arrange()函数R七种武器之数据加工厂plyr讲师何翠仪钟健聪DATAGURU专业数据分析社区arrange()函数R七种武器之数据加工厂plyr讲师何翠仪钟健聪DATAGURU专业数据分析社区但是可以发现这样排序的话车子的名称(即行名)消失了,与初衷不符合,下面我们不妨把行名加上去再重新排序cars=cbind(vehicle=row.names(mtcars),mtcars)arrange(cars,cyl,disp)arrange(cars,cyl,desc(disp))arrange()函数R七种武器之数据加工厂plyr讲师何翠仪钟健聪DATAGURU专业数据分析社区arrange()函数R七种武器之数据加工厂plyr讲师何翠仪钟健聪DATAGURU专业数据分析社区rename()函数rename(x,replace,warn_missing=TRUE)作用:通过名字修改名字,而不是根据它的位置参数:x是要操作的数据;replace是指定的替换的字符向量(包括新的和旧的字符);warm_missing是指定当旧的字符不存在于x的时候,是否显示错误信息,默认值为TRUE,表示显示此信息R七种武器之数据加工厂plyr讲师何翠仪钟健聪DATAGURU专业数据分析社区x=c(a=1,b=2,c=3,d=c)xrename(x,replace=c(b=c))rename(x,replace=c(c=e))rename(x,replace=c(e=c))rename(x,replace=c(e=c),warn_missing=FALSE)rename()函数R七种武器之数据加工厂plyr讲师何翠仪钟健聪DATAGURU专业数据分析社区count()函数count(df,vars=NULL,wt_var=NULL)作用:数变量中观测值出现的个数参数:df是要处理的数据框;vars是指定要进行数数的变量;wt_var是指定作为权重的变量R七种武器之数据加工厂plyr讲师何翠仪钟健聪DATAGURU专业数据分析社区例子a=data.frame(names=c(a,b,c,d,a,a,a,b,b,c),wt=c(1,1,1,1,2,2,2,2,2,2))acount(a,vars=names)count(a,vars=names,wt_var=wt)count()函数R七种武器之数据加工厂plyr讲师何翠仪钟健聪DATAGURU专业数据分析社区count(a,names,wt)count(a,c(names,wt))count()函数R七种武器之数据加工厂plyr讲师何翠仪钟健聪DATAGURU专业数据分析社区match_df()函数match_df(x,y,on=NULL)作用:从一个数据框中提取与另一个数据框中相同的行参数:x是原始的需要提取的数据框;y是用来找出相同行的另一个数据框;on是指定要来比对的变量,默认为比较两个数据框中所有的变量R七种武器之数据加工厂plyr讲师何翠仪钟健聪DATAGURU专业数据分析社区例子count(baseball,id)longterm=subset(count(baseball,id),freq25)bb_longterm=match_df(baseball,longterm,on=id)bb_longtermmatch_df()函数R七种武器之数据加工厂plyr讲师何翠仪钟健聪DATAGURU专业数据分析社区match_df()函数R七种武器之数据加工厂plyr讲师何翠仪钟健聪DATAGURU专业数据分析社区join()函数join(x,y,by=NULL,type=“left”,match=“all”)作用:联合两个数据框参数:x,y是两个数据框;by是指定要联合的变量,默认值为所有的变量;type是指定联合的方式R七种武器之数据加工厂plyr讲师何翠仪钟健聪DATAGURU专业数据分析社区join()函数x1=c(1,2,3,4)x2=c(5,6,7,8)x=data.frame(x1,x2)y1=x1*10y=data.frame(y1,x2)y[,2]=c(1,2,6,7)join(x,y,by=x2)R七种武器之数据加工厂plyr讲师何翠仪钟健聪DATAGURU专业数据分析社区join()函数join(x,y,x2,type=inner)join(x,y,x2,type=right)join(x,y,x2,type=full)y[,2]=c(6,6,6,6)join(x,y,x2,type=inner,match=all)join(x,y,x2,type=inner,match=“first)R七种武器之数据加工厂plyr讲师何翠仪钟健聪DATAGURU专业数据分析社区join()函数与merge()函数对比y[,2]=c(1,2,6,7)merge(x,y,x2)join()函数运行速度比较快first-ddply(baseball,id,summarise,first=min(year))system.time(b2-merge(baseball,first,by=id,all.x=TRUE))system.time(b3-join(baseball,first,by=id))R七种武器之数据加工厂plyr讲师何翠仪钟健聪DATAGURU专业数据分析社区低成本获取高端知识技术成就梦想炼数成金edu.dataguru.cnDATAGURU专业数据分
本文标题:R七种武器之数据加工厂plyr包
链接地址:https://www.777doc.com/doc-5475108 .html