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

如何在R语言中将四分位数数据分组保存并查询对应学生

学生成绩分组与查询方案

基于你提供的成绩数据,以下是用R语言实现分组和查询的具体步骤:

一、动态获取各科目四分位数

手动输入分位数容易出错,建议用代码自动提取:

# 提取各科目25%(第一四分位数)和75%(第三四分位数)分位数,忽略缺失值
his_q1 <- quantile(SS$HIS, 0.25, na.rm = TRUE)
his_q3 <- quantile(SS$HIS, 0.75, na.rm = TRUE)

bio_q1 <- quantile(SS$BIO, 0.25, na.rm = TRUE)
bio_q3 <- quantile(SS$BIO, 0.75, na.rm = TRUE)

che_q1 <- quantile(SS$CHE, 0.25, na.rm = TRUE)
che_q3 <- quantile(SS$CHE, 0.75, na.rm = TRUE)

二、为各科目添加分组列

方法1:基础R实现

用嵌套ifelse生成分组:

# 历史科目分组:≤Q1→A,≥Q3→B,其余→C
SS$HIS_group <- ifelse(SS$HIS <= his_q1, "A",
                       ifelse(SS$HIS >= his_q3, "B", "C"))

# 生物科目分组
SS$BIO_group <- ifelse(SS$BIO <= bio_q1, "A",
                       ifelse(SS$BIO >= bio_q3, "B", "C"))

# 化学科目分组
SS$CHE_group <- ifelse(SS$CHE <= che_q1, "A",
                       ifelse(SS$CHE >= che_q3, "B", "C"))

方法2:dplyr包实现(更易读)

如果习惯用tidyverse工具链,用case_when更清晰:

library(dplyr)

SS <- SS %>%
  mutate(
    HIS_group = case_when(
      HIS <= his_q1 ~ "A",
      HIS >= his_q3 ~ "B",
      TRUE ~ "C"
    ),
    BIO_group = case_when(
      BIO <= bio_q1 ~ "A",
      BIO >= bio_q3 ~ "B",
      TRUE ~ "C"
    ),
    CHE_group = case_when(
      CHE <= che_q1 ~ "A",
      CHE >= che_q3 ~ "B",
      TRUE ~ "C"
    )
  )

三、保存分组后的数据集

可以选择保存为CSV(通用格式)或RData(R专用,保留数据结构):

# 保存为CSV文件,不保留行名
write.csv(SS, "student_scores_with_groups.csv", row.names = FALSE)

# 保存为RData文件,方便后续直接加载
save(SS, file = "student_scores_with_groups.RData")

四、查询各组学生

1. 单个科目分组查询

比如查询历史科目A组的学生:

# 基础R写法
his_group_A <- subset(SS, HIS_group == "A")

# dplyr写法
his_group_A <- SS %>% filter(HIS_group == "A")

替换HIS_group为BIO_group/CHE_group,即可查询对应科目的分组学生。

2. 多科目组合查询

比如查询历史和生物都为A组的学生:

multi_A_students <- SS %>% filter(HIS_group == "A" & BIO_group == "A")

3. 查看分组统计信息

可以快速查看各组的成绩分布和人数:

# 基础R:查看历史科目各组的成绩摘要
by(SS$HIS, SS$HIS_group, summary)

# dplyr:生成各组详细统计
SS %>% 
  group_by(HIS_group) %>% 
  summarise(
    最低分 = min(HIS, na.rm = TRUE),
    第一四分位数 = quantile(HIS, 0.25, na.rm = TRUE),
    中位数 = median(HIS, na.rm = TRUE),
    第三四分位数 = quantile(HIS, 0.75, na.rm = TRUE),
    最高分 = max(HIS, na.rm = TRUE),
    学生人数 = n()
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 15:51:33