Common people
distinct() 函数可以查看唯一值。有时了解每个值各有多少也很有用。base R 的对应函数是 table();它在 sparklyr 中不受支持,因为它不符合 tidyverse 将一切都保持为 tibble 的理念。相应地,您需要使用 count()。使用时传入未加引号的列名。例如,要统计列 x、y 和 z 的不同组合出现的次数,可以这样写:
a_tibble %>%
count(x, y, z)
其结果与下面相同:
a_tibble %>%
distinct(x, y, z)
……不同之处在于会多出一列 n,其中包含计数。
count() 的一个很好用的场景是获取某个字段最常见的取值。做法是先调用 count(),并传入参数 sort = TRUE,按 n 列的降序排列行,然后使用 slice_max() 将结果限制为前若干个值。(slice_max() 类似于 base R 的 head(),但它可用于 Spark 等远程数据集。)例如,要获取列 x、y 和 z 最常见的 20 种组合,可以这样写:
a_tibble %>%
count(x, y, z, sort = TRUE) %>%
slice_max(20)
本练习是课程的一部分
R 中使用 sparklyr 的 Spark 入门
练习说明
已为您创建名为 spark_conn 的 Spark 连接。与存储在 Spark 中的曲目信息相关联的 tibble 已预定义为 track_metadata_tbl。
- 统计
track_metadata_tbl中artist_name列的取值计数。- 传入
sort = TRUE,按受欢迎程度降序排列行。
- 传入
- 使用
slice_max()将结果限制为前 20 个。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# track_metadata_tbl has been pre-defined
track_metadata_tbl
track_metadata_tbl %>%
# Count the artist_name values
___ %>%
# Restrict to top 20
___