1. Learn
  2. /
  3. 课程
  4. /
  5. R 中使用 sparklyr 的 Spark 入门

Connected

道练习

将连续变量转换为分类变量(2)

上一节转换的一个特殊情况是:将连续变量按其分位数切分为多个桶。此转换常用于分析问卷或评分数据。若让受访者给出 1–5 星的评分,中位数往往并不是 3 星。这种情况下,按分位数拆分评分会更有用。例如,您可以在第 0、20、40、60、80、100 百分位处分割,形成 5 个五分位组。

base R 的做法是将 cut() 与 quantile() 结合使用。sparklyr 中对应的转换是 ft_quantile_discretizer()。它接收参数 num_buckets,用于指定桶的数量。下面并列展示了 base R 与 sparklyr 的实现方式。与之前相同,设置了 right = FALSE 和 include.lowest。

survey_response_group <- cut(
  survey_score,
  breaks = quantile(survey_score, c(0, 0.25, 0.5, 0.75, 1)),
  labels = c("hate it", "dislike it", "like it", "love it"),
  right  = FALSE,
  include.lowest = TRUE
)
survey_data %>%
  ft_quantile_discretizer("survey_score", "survey_response_group", num_buckets = 4)

与 ft_bucketizer() 一样,得到的分箱是从 0 开始计数的数字。如果您希望在 R 中使用它们,请显式转换为 factor。

说明

100 XP

已为您创建名为 spark_conn 的 Spark 连接。存储在 Spark 中的曲目信息已作为 tibble 预定义为 track_metadata_tbl。duration_labels 是描述时长的字符向量。

  • 基于 track_metadata_tbl 创建名为 familiarity_by_duration 的变量。
    • 选择字段 duration 和 artist_familiarity。
    • 使用 ft_quantile_discretizer() 基于 duration 的 5 个分位数分箱,创建新字段 duration_bin。
    • 收集结果。
    • 将 duration_bin 转换为因子,并使用标签 duration_labels。
  • 绘制按 duration_bin 分组的 artist_familiarity 的 ggplot() 箱线图。
    • ggplot() 的第一个参数是数据,即 familiarity_by_duration。
    • ggplot() 的第二个参数是美学映射,将 duration_bin 和 artist_familiarity 放入 aes() 中。
    • 添加 geom_boxplot() 绘制箱线图。