tidy.md 2.0 KB

数据整理

科学实验原始数据格式多种多样,这给数据处理分析带来困难。如果有一个统一的数据格式,可以降低数据的复杂性,便于理解和交流,也给统计程序开发者提供方便,增加数据逻辑的使用范围。庆幸的是,科学数据都可以转化为字段和记录两向列表的形式。这个两向表遵循以下三条规则:

  • 列代表变量(或字段),每个变量一列
  • 行代表观测(或记录),每个观测值一行
  • 每个单元格代表该变量在该观测中的观测值 这是日常生活和科研记录中的常用记录数据形式,但为了节省纸张、或者为了数据紧凑直观,有时候也不这样记录,特别是对于多因素试验的情况。比如,这个表: 为了数据分析的需要,需要先将这种形式的数据转化为上述标准格式。这个过程叫做数据整理(tidy),整理好的标准数据也叫做tidy数据。
tidyverse、tidyr

tidyverse是用于数据整理的R包。 安装:install.packages('tidyverse') 或者安装其轻量版本 install.packages("tidyr") 如想使用最新版本,可以从源码安装: install.packages("devtools") devtools::install_github("tidyverse/tidyr")

使用: library('tidyr')

筛选记录(filter)

filter(flights, month == 1, day == 1) 比较运算符:>, >=, <, <=, != (不等于), and == (等于). 注意,等于是==而不是=,前者是比较运算符,后者是赋值运算符,这一点容易出错。

另外需要注意的是在使用==比较浮点数时,计算机提供的有限精度的近似而不是绝对精确的数值(物质的有限可分性原理)

sqrt(2) ^ 2 其实并不等于2,测试一下:

sqrt(2) ^ 2
#> [1] FALSE
1/49 * 49 == 1
#> [1] FALSE

这时不要使用==,代之以near()函数:

near(sqrt(2) ^ 2,  2)
#> [1] TRUE
near(1 / 49 * 49, 1)
#> [1] TRUE

逻辑运算符:|、& 、!、xor filter(flights, month == 11 | month == 12)