←
PDF 203 / 520 Exercises
→
English · PDF 203
Original PDF page 203
中文 · PDF 203

在开始处理这些数据时,我曾天真地以为每个航班号每天只会使用一次:这样会让沟通某个特定航班的问题变得容易得多。遗憾的是,事实并非如此!如果一张表缺少主键,有时用 mutate() 和 row_number() 添加一个会很有用。当你做了一些筛选之后,想回头与原始数据进行核对时,这会让观测值的匹配变得更容易。这被称为代理键。

主键与另一张表中对应的外键构成一个关系。关系通常是一对多的。例如,每个航班有一架飞机,但每架飞机有多个航班。在其他数据中,你偶尔会看到一对一的关系。你可以把它看作一对多关系的一种特例。你可以用一个多对一关系加上一个一对多关系来建模多对多关系。例如,在这份数据中,航空公司与机场之间是多对多的关系:每家航空公司飞往多个机场;每个机场有多家航空公司。

练习

    1. 为 flights 添加一个代理键。
    1. 找出以下数据集中的键:
    • a. Lahman::Batting
    • b. babynames::babynames
    • c. nasaweather::atmos
    • d. fueleconomy::vehicles
    • e. ggplot2::diamonds(你可能需要安装一些包并阅读一些文档。)
    1. 画一张图,展示 Lahman 包中 Batting、Master 和 Salaries 表之间的连接关系。再画一张图,展示 Master、Managers 和 AwardsManagers 之间的关系。你会如何描述 Batting、Pitching 和 Fielding 表之间的关系?