R 语言 数据切片,对每个切片组分别操作
来源:互联网 发布:买家怎么进入淘宝客 编辑:程序博客网 时间:2024/06/13 05:47
R语言中处理frame数据框,根据某一列进行切片分组,之后对每一组进行排序、挑选等操作。
用到的函数主要是splite() lapply() sapply() 其中sapply()可以能够简化输出形式,即如果能把列表简化成矩阵形式那么就转化,如果不能就输出列表。
在下面这个例子中,对于数据框,依据"group"列分为三组,对于每一组,我们依据"value"列进行排序,当出现排序值一样的时候,再依据"number"进行排序:
> group <- sample(letters[1:3],10,replace=TRUE)> number <- sample(1:4,10,replace=TRUE)> value <- sample(c(1.2,2.1,0.5,0.8,1.5),10,replace=TRUE)> testData <- data.frame(group,number,value)> groupData <- split(testData, testData$group)> groupData$a group number value3 a 4 0.84 a 4 0.85 a 3 1.2$b group number value2 b 3 1.26 b 3 2.18 b 3 1.2$c group number value1 c 1 2.17 c 4 1.29 c 2 1.510 c 3 1.5> orderData <- lapply(groupData, function(x){x[order(x[,3],x[,2]),]})> orderData$a group number value3 a 4 0.84 a 4 0.85 a 3 1.2$b group number value2 b 3 1.28 b 3 1.26 b 3 2.1$c group number value7 c 4 1.29 c 2 1.510 c 3 1.51 c 1 2.1> selectData <- sapply(orderData, function(x,y){x[y,]}, 2)> selectData a b c group factor,1 factor,1 factor,1number 4 3 2 value 0.8 1.2 1.5 > selectData <- sapply(orderData, function(x,y){x[y,]}, 4)> selectData a b c group factor,1 factor,1 factor,1number NA NA 1 value NA NA 2.1 >
在上边代码中 ,
groupData <- split(testData, testData$group) 语句把数据框分片;
orderData <- lapply(groupData, function(x){x[order(x[,3],x[,2]),]}) 把每一个分片数据框进行排序,其中内部自定函数中x[order(x[,3],x[,2]),] 可以先按照第三列再按照第二列排序;
selectData <- sapply(orderData, function(x,y){x[y,]}, 2) 该语句中通过自定一个2输入参数的函数,来给sapply调用的函数传递第二个参数。
0 0
- R 语言 数据切片,对每个切片组分别操作
- 如何对迭代器做切片操作
- 切片操作
- 切片操作
- 切片
- 切片
- 切片
- 切片
- 切片
- 切片
- 切片
- 切片
- [Python] 对字符串,列表的切片操作
- python如何对list进行切片操作
- 3-5对迭代器做切片操作
- python-9-如何对迭代器做切片操作?
- Python pandas库 数据切片 行列操作
- 对字符串切片
- tmux使用教程(快捷键)
- CentOS6.5中Cmake 安装
- 关于Java获取带空格的文件路径问题
- logback demo
- 单例模式
- R 语言 数据切片,对每个切片组分别操作
- 23种设计模式(3)_创建型_抽象工厂模式(Abstract Factory Pattern)
- 文件上传
- Swift 可选类型
- T-Sql 递归查询(给定节点查所有父节点、所有子节点的方法)
- 【郑轻】[1675]YJJ的福利
- 卷积层感受野和坐标映射
- CSAPP:函数调用过程(ebp,esp)
- Android开发:15分钟学会Java正则表达式