|
@@ -7,7 +7,7 @@
|
|
|
这是日常生活和科研记录中的常用记录数据形式,但为了节省纸张、或者为了数据紧凑直观,有时候也不这样记录,特别是对于多因素试验的情况。比如,这个表:
|
|
|
为了数据分析的需要,需要先将这种形式的数据转化为上述标准格式。这个过程叫做数据整理(tidy),整理好的标准数据也叫做tidy数据。
|
|
|
|
|
|
-##### tidyverse
|
|
|
+##### tidyverse、tidyr
|
|
|
|
|
|
tidyverse是用于数据整理的R包。
|
|
|
安装:install.packages('tidyverse')
|
|
@@ -21,7 +21,30 @@ devtools::install_github("tidyverse/tidyr")
|
|
|
library('tidyr')
|
|
|
|
|
|
|
|
|
-#### tidyr
|
|
|
+#### 筛选记录(filter)
|
|
|
|
|
|
-tidyr是
|
|
|
+filter(flights, month == 1, day == 1)
|
|
|
+比较运算符:>, >=, <, <=, != (不等于), and == (等于).
|
|
|
+注意,等于是==而不是=,前者是比较运算符,后者是赋值运算符,这一点容易出错。
|
|
|
|
|
|
+另外需要注意的是在使用==比较浮点数时,计算机提供的有限精度的近似而不是绝对精确的数值(物质的有限可分性原理)
|
|
|
+
|
|
|
+sqrt(2) ^ 2 其实并不等于2,测试一下:
|
|
|
+
|
|
|
+```{r}
|
|
|
+sqrt(2) ^ 2
|
|
|
+#> [1] FALSE
|
|
|
+1/49 * 49 == 1
|
|
|
+#> [1] FALSE
|
|
|
+```
|
|
|
+这时不要使用==,代之以near()函数:
|
|
|
+
|
|
|
+```{r}
|
|
|
+near(sqrt(2) ^ 2, 2)
|
|
|
+#> [1] TRUE
|
|
|
+near(1 / 49 * 49, 1)
|
|
|
+#> [1] TRUE
|
|
|
+```
|
|
|
+
|
|
|
+逻辑运算符:|、& 、!、xor
|
|
|
+filter(flights, month == 11 | month == 12)
|