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

如何基于鸢尾花数据集创建显示观测值所属百分位区间的变量

如何基于鸢尾花数据集创建显示观测值所属百分位区间的变量

嘿,我来帮你把这个需求落地——用R的tidyverse工具包给鸢尾花数据集里的花萼长度按百分位划分区间,生成对应的分组变量,操作起来超简单,具体步骤如下:

核心实现代码

先确保你已经安装了tidyverse包,然后运行这段代码就能搞定:

library(tidyverse)

# 给iris数据集新增Range列,标记Sepal.Length所属的百分位区间
iris_with_range <- iris %>% 
  mutate(Range = cut(
    Sepal.Length, 
    quantile(Sepal.Length, probs = c(0, 0.2, 0.4, 0.6, 0.8, 1)),
    include.lowest = TRUE
  ))

代码细节拆解

  • library(tidyverse):加载包含dplyr、ggplot2等工具的tidyverse全家桶,我们用到的mutate函数就来自dplyr
  • mutate(Range = ...):新增一列名为Range的变量,专门用来存储百分位区间标签
  • cut():这是实现区间划分的核心函数,参数作用如下:
    • 第一个参数Sepal.Length:指定要按哪一列的数值来划分区间
    • 第二个参数quantile(..., probs = c(0, 0.2, 0.4, 0.6, 0.8, 1)):用百分位函数生成切割点,这里是把数据分成5个等距的百分位区间(0-20%、20-40%…80-100%)
    • include.lowest = TRUE:确保数据里的最小值(也就是4.3)能被包含在第一个区间里,避免出现遗漏

运行结果示例

执行代码后,你会得到带区间标签的数据集,以下是前10行的展示:

Sepal.Length Sepal.Width Petal.Length Petal.Width Species   Range
1           4.3         3.0          1.1         0.1  setosa [4.3,4.6]
2           4.4         2.9          1.4         0.2  setosa [4.3,4.6]
3           4.6         3.1          1.5         0.2  setosa [4.3,4.6]
4           4.6         3.4          1.4         0.3  setosa [4.3,4.6]
5           4.7         3.2          1.3         0.2  setosa (4.6,4.8]
6           4.8         3.4          1.6         0.2  setosa (4.6,4.8]
7           4.8         3.0          1.4         0.1  setosa (4.6,4.8]
8           4.9         3.0          1.4         0.2  setosa   (4.8,5]
9           4.9         3.1          1.5         0.1  setosa   (4.8,5]
10          ...

新增的Range列清晰标记了每一行的花萼长度属于哪个百分位区间,后续不管是分组统计还是做可视化分析,这个变量都能帮上大忙~

备注:内容来源于stack exchange,提问作者bill999

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 08:30:26