1. Nauka
  2. /
  3. Kursy
  4. /
  5. R 中使用 sparklyr 的 Spark 入门

Connected

Ćwiczenie

分组:音乐和数据都离不开它

一个常见的分析问题是:如何为数据中的每个分组计算汇总统计量。例如,您可能想按月份或按地区查看销售收入。在 R 中,将数据拆分为若干组、对每组应用汇总统计,再把结果合并为单一数据结构的过程,称为"split-apply-combine"。不过,这个概念早已存在:SQL 数十年来一直有 GROUP BY 语句。"map-reduce"与之相近,其中"map"大致对应"拆分"和"应用","reduce"对应"合并"。dplyr/sparklyr 的做法是先使用 group_by(),再进行 mutate() 或 summarize()。它接收要分组的列名(不加引号)。例如,若要对列 x 计算均值,并按列 grp1 与 grp2 的取值组合分组,代码如下所示。

a_tibble %>%
  group_by(grp1, grp2) %>%
  summarize(mean_x = mean(x))

请注意,传递给 group_by() 的列通常应为分类变量。例如,如果您想根据身高计算平均体重,直接按身高分组并不合理,因为每个人的身高几乎都不同。不过,您可以使用 cut() 将身高离散化为若干类别,然后对每个类别计算平均体重。

Instrukcje

100 XP

已经为您创建了名为 spark_conn 的 Spark 连接。已在 Spark 中预先定义了与曲目信息关联的 tibble,名称为 track_metadata_tbl。

  • 按 artist_name 对 track_metadata 的内容进行分组,然后:
    • 将分组后的 duration 均值汇总为新列 mean_duration。
    • 将结果赋值给 duration_by_artist。
  • 通过按 mean_duration 升序排列行,找出歌曲最短的艺人。
  • 同样地,通过按 mean_duration 降序排列,找出歌曲最长的艺人。