You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中针对diamonds数据按净度类型获取价格极值及max函数条件应用

嘿,作为R新手能想到用函数封装逻辑,这个思路超赞!针对你的需求,我整理了两种实用的实现方案,帮你轻松搞定diamonds数据集的净度价格范围统计:

方案一:自定义可传入条件的函数

如果你确实需要一个能灵活传入clarity筛选条件的函数,用dplyr包来实现会非常直观。先确保你已经加载了ggplot2(因为diamonds数据集在这个包里)和dplyr:

# 加载所需包
library(ggplot2)
library(dplyr)

# 定义自定义函数
get_clarity_price_range <- function(condition = TRUE) {
  diamonds %>%
    filter({{ condition }}) %>%  # 使用{{}}传递表达式条件,支持灵活筛选
    summarize(
      min_price = min(price, na.rm = TRUE),
      max_price = max(price, na.rm = TRUE)
    )
}

函数使用示例:

  • 查看净度为SI1的价格范围:
get_clarity_price_range(clarity == "SI1")
  • 同时查看VS1和VS2两种净度的价格范围:
get_clarity_price_range(clarity %in% c("VS1", "VS2"))
  • 不传入条件时,默认返回整个数据集的价格范围:
get_clarity_price_range()

这里的{{}}(大括号包裹)是dplyr里的表达式传递语法,能让你灵活传入任何针对clarity的筛选条件,完美匹配你的需求~

方案二:一次性获取所有净度类型的价格范围

如果你其实是想直接拿到8种净度各自的min和max价格,那不用逐个调用函数,直接分组统计会更高效:

# 按净度分组,计算每个组的最小/最大价格
diamonds %>%
  group_by(clarity) %>%
  summarize(
    min_price = min(price, na.rm = TRUE),
    max_price = max(price, na.rm = TRUE)
  ) %>%
  arrange(clarity)  # 按净度类型排序结果,方便查看

用Base R实现的替代方案

如果你还没接触过dplyr,用Base R的aggregate函数也能轻松搞定:

aggregate(price ~ clarity, data = diamonds, 
          FUN = function(x) c(min_price = min(x), max_price = max(x)))

这样就能一次性得到所有净度类型的价格范围,比逐个传条件更省心~

内容的提问来源于stack exchange,提问作者Sovik Gupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:40:43