![v2-352e6fd535bc378d8690bbfc5e361b41_1440w.jpg?source=172ae18b](http://img-03.proxy.5ce.com/view/image?&type=2&guid=a24e7b74-5c2f-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-352e6fd535bc378d8690bbfc5e361b41_1440w.jpg?source=172ae18b)
![v2-352e6fd535bc378d8690bbfc5e361b41_180x120.jpg](http://img-02.proxy.5ce.com/view/image?&type=2&guid=a24e7b74-5c2f-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-352e6fd535bc378d8690bbfc5e361b41_180x120.jpg)
数据分析经常会涉及相互关联的多个数据表,称为关系数据库。关系数据库通用语言是 SQL
(结构化查询语言),dplyr
包提供了一系列类似 SQL
语法的函数,可以很方便地操作关系数据库。
关系是指两个数据表之间的关系,更多数据表之间的关系总可以表示为两两之间的关系。
一个项目的数据,通常都是用若干数据表分别存放,它们之间通过 "键" 连接在一起,根据数据分析的需要,通过键匹配进行数据连接。
例如,纽约机场航班数据的关系结构:
![v2-3e3742d610748232e59a3a7700b3ef53_b.jpg](http://img-02.proxy.5ce.com/view/image?&type=2&guid=a24e7b74-5c2f-eb11-8da9-e4434bdf6706&url=https://pic4.zhimg.com/v2-3e3742d610748232e59a3a7700b3ef53_b.jpg)
比如,想要考察天气状况对航班的影响,就需要先将数据表 flights
和 wheater
根据其键值匹配连接为一个新数据表。
键列(可以不止 1 列),能够唯一识别自己或别人数据表的每一个观测。要判断某(些)列是否是键列,可以先用 count()
计数,再看是否没有 n > 1
出现:
load("datas/planes.rda")
planes %>%
count(tailnum) %>%
filter(n > 1)
![v2-431dd02fded6b8d12269ed57909034a0_b.png](http://img-02.proxy.5ce.com/view/image?&type=2&guid=a24e7b74-5c2f-eb11-8da9-e4434bdf6706&url=https://pic1.zhimg.com/v2-431dd02fded6b8d12269ed57909034a0_b.png)
load("datas/weather.rda")
weather %>%
count(year, month, day, hour, origin) %>%
filter(n > 1)