在上一篇笔记中我们还遗留了几个问题:1、我们有时还需要更为精确地处理数据集中的数据,这时候涉及数据的整合和重铸;2、有些时候除了整合重铸,我们还需要利用控制流来自编函数。这一篇笔记就处理这两个问题。

整合重铸

R中有很多整合数据的方法,最简单的比如用t()对数据框进行转置。稍微复杂的是使用aggreate函数:

aggreate(data,by,FUN)

x是数据集,by是变量,FUN是函数,比如我们对mtcars数据集进行这样的操作,FUN使用均值函数mean。

attach(mtcars)
agg <- aggregate(mtcars,by=list(cyl,gear),FUN=mean,na.rm=T)
> aggGroup.1 Group.2  mpg cyl disp  hp drat  wt qsec  vs  am gear carb
1      4      3 21.5  4  120  97 3.70 2.46 20.0 1.0 0.00    3 1.00
2      6      3 19.8  6  242 108 2.92 3.34 19.8 1.0 0.00    3 1.00
3      8      3 15.1  8  358 194 3.12 4.10 17.1 0.0 0.00    3 3.08
4      4      4 26.9  4  103  76 4.11 2.38 19.6 1.0 0.75    4 1.50
5      6      4 19.8  6  164 116 3.91 3.09 17.7 0.5 0.50    4 4.00
6      4      5 28.2  4  108 102 4.10 1.83 16.8 0.5 1.00    5 2.00
7      6      5 19.7  6  145 175 3.62 2.77 15.5 0.0 1.00    5 6.00
8      8      5 15.4  8  326 300 3.88 3.37 14.6 0.0 1.00    5 6.00

在这个输出中,比如第一行意为mpg=4,gear=3的车辆,它们各项参数的均值,下面各组以此类推。
使用reshape2包中的melt函数可以将原始数据集进行融合。比如考虑这样的一个数据集:

> data
dataX1 X2 X3 X4
[1,]  1  2  8  5
[2,]  1  5  8  2
[3,]  1  3  6  4
[4,]  2 12  3  1

我们可以通过melt函数添加一列变量列,这样便于我们后续的操作:

melt(data)Var1 Var2 value
1    1  X1    1
2    2  X1    1
3    3  X1    1
4    4  X1    2
5    1  X2    2
6    2  X2    5
7    3  X2    3
8    4  X2    12
9    1  X3    8
10    2  X3    8
11    3  X3    6
12    4  X3    3
13    1  X4    5
14    2  X4    2
15    3  X4    4
16    4  X4    1

可以看见Var2就是标识符。
此外,我们还可以通过dcast()读取已经综合的数据,并且进行重铸,这里不再叙述。

控制流

所谓控制流就是循环和条件执行,下面列出了最常见的控制流

  • for循环
    for(var in seq) statement
    比如 for(i in 1:10) print(“Hello”)就会循环10次输出10个Hello
  • while循环
    while(cond) statement
    比如i=20 while(i>10) i <- i-2,就会把i一直削减到10
  • if-else 若XX则XX,否则XX,有更简单的结构ifelse(cond,A,B),判断条件为真则执行A,为假则执行B。
  • switch,switch不是一个特别建议的语法,它的作用是多个if-else的组合,通过选择条件直接输出。比如下面的例子:
x <- c(3,5,1)
for (i in x)print(switch(i,"1"="Monday","2"="Tuesday","3"="Wednesday","4"="Thursday","5"="Friday"))
}
[1] "Wednesday"
[1] "Friday"
[1] "Monday"

最后,通过控制流和其它函数,我们就可以自编一些函数进行数据操作了,这些在实用中会出现千奇百怪的要求,需要分门别类地处理。

R的数据操作基础(三)——整合、重铸、控制流相关推荐

  1. datagrid出现相同两组数据_stata 数据操作基础知识:以一篇论文数据操作为例

    stata 数据操作基础知识:以一篇论文数据操作为例 上节回顾及问题 统计学学习大图景 数据描述 分位数回归 存在的问题: 1.学了就要多使用,哪怕生搬硬套也要多用 2.时间序列的方法,大家可以操作, ...

  2. R︱高效数据操作——data.table包(实战心得、dplyr对比、key灵活用法、数据合并)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 由于业务中接触的数据量很大,于是不得不转战开始 ...

  3. Linux(debian7)操作基础(三)之PCI/PCI-E设备配置空间

    ⑴ 概念 PCI和PCI Express,是计算机常使用的一种高速总线.操作系统中的PCI/PCI-E设备驱动以及操作系统内核,都需要访问PCI及PCI-E配置空间.PCI/PCI-E设备的正常运行, ...

  4. MongoDB 数据操作(四)数据删除

    来源:我的博客站 OceanicKang |<MongoDB 数据操作(四)数据删除> 上一篇:<MongoDB 数据操作(三)数据更新(2)修改器> 在 MongoDB 中删 ...

  5. R语言空间数据处理(part1)--基础数据操作与处理

    学习笔记,仅供参考 学习书目:<R语言空间数据处理与分析实践教程>–卢宾宾; 基础数据操作与处理 设置工作路径,并导入包 workL = "F:/MyStudio/Rstudio ...

  6. R语言基础数据操作fBasics

    R语言基础数据操作&fBasics xlsx文件的导入 library(readxl) data1 <- read_excel("C:/Users/12241/Desktop/ ...

  7. Django模型基础(三)——关系表的数据操作

    模型之间可以有三种表关系,即一对一,一对多和多对多.表关联之间的数据操作在Django中可以很方便的操作到.在模型中,表关联的字段类型是关联表的实例,而不是字段本身类型.关联字段在数据库中会在其后补上 ...

  8. R语言数据可视化 ggplot2基础4 位置与坐标系

    R语言数据可视化 ggplot2基础4 位置与坐标系 我们继续使用ggplot2::diamonds介绍position. position = "identity" ggplot ...

  9. Java基础-22总结登录注册IO版,数据操作流,内存操作流,打印流,标准输入输出流,转换流,随机访问流,合并流,序列化流,Properties...

    你需要的是什么,直接评论留言. 获取更多资源加微信公众号"Java帮帮" (是公众号,不是微信好友哦) 还有"Java帮帮"今日头条号,技术文章与新闻,每日更新 ...

最新文章

  1. Red and Black---DFS深度优先算法
  2. Memcached相关内容总结
  3. 十字路口红绿灯plc程序_交通灯程序的最优化(西门子S7-200PLC为例)
  4. 【Pytorch神经网络基础理论篇】 05 矩阵计算
  5. openshift 在win7上的实现
  6. 在程序里面(服务器端)调用Winrar压缩文件的方法?另寻求一条语句转换的方法。vb.net到C#。...
  7. 擴展 CommandField 類別 - 刪除提示訊息
  8. PHP Linux安装
  9. ZigBee开发(1)--开发环境搭建
  10. 安卓系统的电视机_天猫魔盒强刷机教程,把天猫魔盒刷成安卓系统教程?
  11. 威联通Nas进阶配置
  12. windows清理_10款欧美流行的Windows清理软件
  13. 把一个人的特点写具体作文_把一个人的特点写具体作文400字
  14. cocos2d-x初步
  15. LOL英雄联盟卡顿掉帧问题解决办法 2022年8月1日
  16. BJTU1935 铁憨憨骑士团的购买装备
  17. h5 监听安卓物理返回键
  18. 按键精灵手机版_关于截屏一些方法
  19. Ubuntu修改系统时间到北京时间的步骤
  20. SkyWalking之告警

热门文章

  1. 无监督域适应、人体解析、视频异常检测和水果成熟度分类,推荐本周那些有意思的​CV综述...
  2. 我在51sap学习过程中经常遇到的一些实施问题
  3. 怎么衡量纸白银走势图的强弱?
  4. Android安全防护/检查root/检查Xposed/反调试/应用多开/模拟器检测(持续更新)
  5. PDF怎么转图片?一分钟解决
  6. 疯狂Java讲义-面向对象(上)
  7. 前端面试之--网络相关
  8. 无意中看到程序员的电脑,居然装了一个宇宙!!!
  9. Framework7中文教程-中文演示DEMO
  10. UE4 C++设计模式:建造者模式(Builder Pattern)