全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
72997 16
2015-12-10
1、apply函数
对一个Matrix或者Array进行某个维度的运算。其格式是:
apply(数据,维度Index,运算函数,函数的参数)
对于Matrix来说,其维度值为2,第二个参数维度Index中,1表示按行运算,2表示按列运算。例子:
> m<-matrix(1:6,2,3)> m     [,1] [,2] [,3][1,]    1    3    5[2,]    2    4    6> apply(m,2,sum) #维度Index=2,计算每一列的sum值[1]  3  7 11 注:
如果是DataFrame,那么系统会将其转为Matrix,如果所有Column不是数字类型或者类型不一致,导致转换失败,那么apply是运算不出任何一列的结果。这时候应该使用lappy()函数
2.lappy函数
针对list,我们可以使用lapply函数。
其调用如下:lapply(数据,运算函数,函数的参数)
对于DataFrame来说,如果不同的列有不同的数据类型,不能转换成Matrix,但是却可以转换成List,然后使用lapply函数。
例子:建立一个shop_id,saled,take_out和delivery_time的Data Frame,然后只统计平均saled,平均外送费用和平均外送时间。由于shop_id列不是数值类型,所以无法算平均值,所以我们可以对非数值的数据只取count数量。这里需自定义函数。
>wm<-read.csv(“testwaimai.csv”)>attach(wm) >s<-data.frame(shop_id,saled,takeout_cost,delivery_time)>as.character(shop_id)>lapply(s,function(x){if(is.numeric(x)){mean(x)}else{length(x)}})$shop_id[1] 52 $saled[1] 656.1154 $takeout_cost[1] 3.673077 $delivery_time[1] 39.34615
3.     sapply函数
sapply函数和Lapply函数类似,也是对List进行处理,只是在返回结果上,sapply会根据结果的数据类型和结构,重新构建一个合理的数据类型返回。调用格式如下:
sapply(数据,运算函数,函数的参数,simplify = TRUE, USE.NAMES = TRUE)
> sapply(s,function(x){if(is.numeric(x)) {mean(x)} else {length(x)}})      shop_id         saled  takeout_cost delivery_time     52.000000    656.115385      3.673077     39.346154
4、tapply( )函数
tapply是对向量中的数据进行分组处理,而非对整体数据进行处理。
调用格式:
tapply(向量数据,分组标识,运算函数,函数的参数,simplify = TRUE)
例1> s<-data.frame(name=c("Devin","Edward","Lulu","Jeneen"),age=c(30,33,29,32),score=c(95,99,90,88),class=c(1,2,1,2),gender=c("M","M","F","F"))> s    name age score class gender1  Devin  30    95     1      M2 Edward  33    99     2      M3   Lulu  29    90     1      F4 Jeneen  32    88     2      F

> tapply(s$score,s$class,mean) #计算每个班平均成绩

    1    2

92.5 93.5

> tapply(s$score,s$gender,mean) #计算男女生的平均成绩

F  M

89 97

>  tapply(s$score,list(s$class,s$gender),mean) #按照class和gender来计算平均成绩

    F  M

1 90 95

2 88 99

转自:http://f.dataguru.cn/thread-575047-1-1.html

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2015-12-10 23:23:32
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-12-11 08:28:24
这样的好贴要赞
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-5-20 10:30:55
好顶赞啊,lz总结的很好,非常感谢
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-6-10 10:39:56
感谢回答
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-6-20 11:56:09
谢谢分享
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群