作者:黄天元,复旦大学博士在读,目前研究涉及文本挖掘、社交网络分析和机器学习等。希望与大家分享学习经验,推广并加深R语言在业界的应用。
邮箱:huang.tian-yuan@qq.com
本章讲解如何使用summarise函数完成数据的汇总。在开讲之前,我们需要理解,什么叫做汇总。举个例子,如果我们现在对学校的学生身高进行了测量,我们需要得到学生的平均身高,那么我们把所有学生的身高加起来,除以学生的数量,得到身高平均值,这就完成了一个汇总计算。汇总计算的方式多种多样,比如我们要得到最高的身高是多少,最低的身高是多少,身高是中位数是多少,这些都是汇总计算。
在数据表中,数据的汇总的实质就是:我们根据一列数据(本质来说是一个向量),得到一个值,来反映总体在这个属性上的特征。本章会用到R语言自带cars数据集,下面我们先加载需要的包,并把cars转化为tibble,存放在cars1变量中。它只包含两列数据,第一列是汽车的即时速度,第二列是这个速度下要停止下来会继续跑多远。
1library(tidyverse)
2cars %>% as_tibble() -> cars1
3cars1
4## # A tibble: 50 x 2
5## speed dist
6## <dbl> <dbl>
7## 1 4 2
8## 2 4 10
9## 3 7 4
10## 4 7 22
11## 5 8 16
12## 6 9 10
13## 7 10 18
14## 8 10 26
15## 9 10 34
16## 10 11 17
17## # ... with 40 more rows
均值和中位数代表了数据的一般水平,是重要的衡量指标。下面我们看看如何汇总测试的平均值和中位数。
1#平均速度
2cars1 %>%
3 summarise(mean(speed))
4## # A tibble: 1 x 1
5## `mean(speed)`
6## <dbl>
7## 1 15.4
8#速度的中位数
9cars1 %>%
10 summarise(median(speed))
11## # A tibble: 1 x 1
12## `median(speed)`
13## <dbl>
14## 1 15
SQL代码分别为:
<SQL> SELECT AVG(`speed`) AS `mean(speed)`
FROM `cars1`
<SQL> SELECT MEDIAN(`speed`) AS `median(speed)`
FROM `cars1`
注意,我们这里没有给最后的结果命名,因此结果中默认原来的值为命名,也就是说mean(speed)成为了列的名称,事实上我们可以通过赋值来改变它,例子如下:
1cars1 %>%
2 summarise(speed_avg = mean(speed))
3#