5.dplyr处理关系数据(2)

二、筛选连接

##semi_join(x, y) 保留x表中与y表中的观测相匹配的所有观测
##anti_join(x, y) 丢弃x表中与y表中的观测相匹配的所有观测
top_dest <- flights %>%
  count(dest, sort = T) %>%
  head(10)  # 筛出最受欢迎的前10个目的地

flights %>%
  filter(dest %in% top_dest$dest)  # 这是一种筛选方法,但很难扩展到多个变量

flights %>%
  semi_join(top_dest)  # 这种筛选方法可以筛选多个变量

flights %>%
  anti_join(planes, by = "tailnum") %>%
  count(tailnum, sort = T)  # 没有匹配到tailnum的统计
需要注意的问题

1.尽量寻找主键,而不是变量组合
2.确保主键没有缺失值
3.检查外键与主键是否相匹配

三、集合操作

intersect(x, y)  # 返回既在x中,又在y中的观测
union(x, y)  # 返x,y中唯一的观测
setdiff(x, y)  # 返回在x表,但不在y表中的观测

df1 <- tribble(
  ~x, ~y,
  1,1,
  2,1,
  3,2
)
df2 <- tribble(
  ~x, ~y,
  1,1,
  1,2,
  2,3
)
intersect(df1, df2)
union(df1, df2)
setdiff(df1, df2)
setdiff(df2, df1)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,450评论 0 9
  • 测试: http://blog.csdn.net/chenmengyi828/article/details/52...
    Miley_MOJIE阅读 954评论 0 1
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,144评论 1 32
  • 9.1简介三类连接:• 合并连接:向数据框中加入新变量,新变量的值是另一个数据框中的匹配观测。• 筛选连接:根据是...
    子鹿学生信阅读 5,670评论 0 7
  • 很久很久以前,有一座漂亮美丽的城堡,里面住着一位公主。一天,一只长着翅膀的怪兽闯进城堡,将公主抓走了。 而在很远很...
    Evantso阅读 3,812评论 3 7