R语言--tapply,sapply(因子和列表的操作)
2015-12-15 00:15
162 查看
最近参加了一个小比赛,其中的tapply,sapply(lapply)函数可以快速实现我的目的和有效减少代码量
统计不同站点的上车人数
按照车牌号分类,分别统计不同站点上车人数
f | 说明 |
---|---|
tapply(x,f,g) | x为向量,f为因子列,g为操作函数,相对数据框进行类似操作可以用by函数 |
sapply(list,g) | g为操作函数,返还结果为向量,而lapply返还结果为list形式。常与split结合使用 |
example
数据为980路公交车不同站点上车人数统计线路名称 | 车牌号 | 到达站点 | 上车人数 | 开始上车时间 | 结束上车时间 |
---|---|---|---|---|---|
980 | 粤BM8475 | 14 | 11 | 2014-06-09 07:08 | 2014-06-09 07:13 |
980 | 粤BM8475 | 13 | 3 | 2014-06-09 07:14 | 2014-06-09 07:15 |
980 | 粤BM8475 | 12 | 10 | 2014-06-09 07:17 | 2014-06-09 07:17 |
980 | 粤BM8475 | 10 | 5 | 2014-06-09 07:20 | 2014-06-09 07:20 |
980 | 粤BM8475 | 8 | 1 | 2014-06-09 07:22 | 2014-06-09 07:22 |
(Freq <- tapply(data[,4], data[,3], sum)) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 120 257 325 164 174 186 205 80 118 267 259 130 77 541 704 133
按照车牌号分类,分别统计不同站点上车人数
data <- split(data, data$车牌号) ##对数据按照车牌号分组 Freq <- sapply(data, function(data){ tapply(data$上车人数, data$到达站点, sum) }) ##按照车牌号统计不同站点上车人数 Freq[1] ##查看结果 $粤BM8475 1 2 3 4 5 7 8 9 10 12 13 14 15 14 34 12 6 15 2 4 39 7 34 3 27 1
总结
对因子,列表这两个数据类型的熟练应用,会对R的强大有更深一步理解相关文章推荐
- 【Android 进阶(一)】Android MVP框架实现过程
- iOS开发之App启动原理
- 2015年最新App Store审核被拒的理由
- SVN中Create(Apply)patch创建及应用补丁
- AndroidStudio引入.so库
- iOS NSTimer定时器用法
- ElasticSearch部分四--Mapping
- Objective-C中的内存管理
- ios音乐播发器后台运行
- MindMapper中的鱼骨图该怎样进行设置
- Android之Sqlite数据库
- ObObjective-c 采集试图 UICollection
- Objective-c for 循环 九宫格
- iOS使用颜色创建图片
- iOS AFN设置超时
- Android studio断开svn连接
- Android socket实现文件上传下载器
- iOS开发~CocoaPods使用详细说明
- Android学习笔记
- iOS中对数据的存储的一种方法--归档