开始使用免费开始使用

筛选行

除了选择列之外,提取数据集中关键信息的另一种方式是筛选行。这可以通过 filter() 函数完成。要使用 filter(),需要传入一个 tibble 和若干逻辑条件。例如,若只返回列 x 的值大于 0 且 y 的值等于 z 的行,您可以这样写:

a_tibble %>%
  filter(x > 0, y == z)

在开始练习之前,请注意两个提示。首先,不要把 dplyrfilter()stats 包的 filter() 混淆。其次,sparklyr 会在把代码发送到 Spark 之前,将您的 dplyr 代码转换为 SQL 数据库代码。这意味着目前仅支持有限的筛选操作。例如,您不能使用如下代码通过正则表达式筛选字符行:

a_tibble %>%
  filter(grepl("a regex", x))

translate_sql() 的帮助页面说明了可用的功能。您可以放心使用比较运算符,如 >!=%in%算术运算符,如 +^%%;以及逻辑运算符,如 &|!。许多数学函数也受支持,例如 log()abs()round()sin()

与之前一样,方括号索引目前不可用。

本练习是课程的一部分

R 中使用 sparklyr 的 Spark 入门

查看课程

练习说明

已经为您创建了名为 spark_conn 的 Spark 连接。基于存储在 Spark 中的曲目信息,已预定义了一个名为 track_metadata_tbl 的 tibble。

  • 与上一个练习相同,使用 select() 选择 artist_namereleasetitleyear
  • 将结果管道到 filter() 中,筛选出 1960 年代的曲目。

交互式实操练习

通过完成这段示例代码来试试这个练习。

# track_metadata_tbl has been pre-defined
glimpse(track_metadata_tbl)

# Manipulate the track metadata
track_metadata_tbl %>%
  # Select columns
  ___ %>%
  # Filter rows
  ___
编辑并运行代码