上周三我们学了学如何整洁我们的数据,清理好我们的数据后,我们就一起来搞点事情~
子曰:“工欲善其事,必先利其器“。《论语·卫灵公》
我们习惯了excel保存处理数据,习惯总是很难改编的,不过没关系,我们先来介绍几个简单的功能来实现我们excel里常用的操作。
比如下面的筛选,排序,合并,分类汇总等等。。。
首先,亮剑!抄家伙。
dplyr安装加载
dplyr自称 是a grammar of data manipulation, 既然是grammar学会了,我们就可以用dplyr语法与R沟通交流,来实现我们那先非分的想法。
首先安装加载包:
install.packages("dplyr")
library(dplyr)
一、常用的数据操作归纳为以下五种:
filter: 保留满足条件的行
select: 使用列名选出列
arrange: 对数据的所有行排序
mutate: 添加新的变量
summarise: 分类汇总
1. 筛选: filter()
筛选的目的就是为了保留满足条件的行。为了更好地表述我们的操作,这里使用一个构造的 data frame。
df frame(color = c("blue", "black", "blue", "blue", "black"),value = 1:5)
View(df)
比如基于上面的table,我们要
例一:选取 `color == blue` 的观测
例二:选取 `value == 1` 或者 `value == 4 ` 的观测。
2.select--选择需要的列
3. arrange--对数据的所有行排序
再来个降序排列
4. mutate---添加新的变量
mutate对已有列进行数据运算并添加为新列并保存已有列和新列
5.summarise---数据汇总
summarie可以使用的函数有
min(x), median(x), max(x), quantile(x, p),IQR()等统计量
n()返回观测个数,
n_distinct()返回不同的观测个数,
sum(x), mean(x) sum(x > 10), mean(x > 10)
sd(x)标准差, var(x)方差,
iqr(x) :computes interquartile range of the x values.
mad(x) :median absolute deviation,
first()返回第一个观测
last()返回最后一个观测
nth(x,n)返回第n个观测
举个栗子:
二、分类汇总group_by()
以上函数已经很方便了, 但是当它们跟分组操作这个概念结合起来时, 那才叫如虎添翼!
我们举个飞机航班的例子:
install.packages("hflights")
library(hflights)
head(hflights)
我们对飞机航班数据按飞机编号 (TailNum) 进行分组, 计算该飞机航班的:
次数 (count = n()),
平均飞行距离 (dist = mean(Distance, na.rm = TRUE))
延时 (delay = mean(ArrDelay, na.rm = TRUE))
延时 (delay = mean(ArrDelay, na.rm = TRUE))
planes group_by(hflights, TailNum)
delay n(),
dist = mean(Distance, na.rm = TRUE),
delay = mean(ArrDelay, na.rm = TRUE))
#最后提取飞行距离2000以内,飞行次数>20的行数【观测】
delay filter(delay, count > 20, dist < 2000)
稍微用 ggplot2 包作个图观察一下,飞机延时不延时跟飞行距离的相关性,发现延不延误和距离没什么关系,完全在于体制问题,。。。嗯,或者也有可能是天气的原因?
library(ggplot2)
ggplot(delay, aes(dist, delay)) +
geom_point(aes(size = count), alpha = 1/2) +
geom_smooth() +
scale_size_area()
【作图这么简单,我想学!!!,不急,不急,我们下周三开始学习做各种漂亮的统计图形,先埋个伏笔~~~】
三、管道操作(%>% )
嗯,大神就是用来膜拜的,这个符号和ggplot2里的+连接符号一样,都是鄙人喜欢的不得了的创新。
hflights %>%
group_by %>%
summarise) %>%
View
参考链接阅读资料请点这里
【ggplot2,ggvis】 is a plotting system for R, based on the grammar of graphics
下期我们开始绘制各种漂亮的图片~
加个群,随时沟通哦,(575383226)