←
PDF 218 / 520 Set Operations
→
English · PDF 218
Original PDF page 218
中文 · PDF 218

例如,海拔和经度可以唯一标识每个机场,但它们并不是好的标识符!

airports %>% count(alt, lon) %>% filter(n > 1) #> Source: local data frame [0 x 3] #> Groups: alt [0] #> #> # ... with 3 variables: alt , lon , n

    1. 检查主键中的变量都没有缺失值。如果某个值缺失,那么它就无法标识一个观测!
    1. 检查你的外键与另一个表中的主键是否匹配。最好的方法是使用 anti_join()。由于数据录入错误,键不匹配的情况很常见。修复这些问题通常需要大量的工作。

如果你确实存在缺失的键,那么在使用内连接还是外连接时需要慎重考虑,仔细考虑是否要丢弃没有匹配的行。

请注意,仅仅检查连接前后的行数并不足以确保你的连接顺利进行。如果你在进行内连接时两个表中都存在重复的键,你可能会不走运,因为被丢弃的行数可能恰好等于重复的行数!

集合操作

最后一种两表动词是集合操作。一般来说,我使用它们的频率最低,但当你想把一个复杂的筛选拆分成更简单的部分时,它们偶尔会很有用。所有这些操作都针对完整的行,比较每个变量的值。它们要求 x 和 y 输入具有相同的变量,并将观测视为集合:

intersect(x, y)

只返回同时出现在 x 和 y 中的观测。

union(x, y)

返回 x 和 y 中唯一的观测。

setdiff(x, y)

返回在 x 中但不在 y 中的观测。