You need to enable JavaScript to run this app. R语言如何基于ISLR的College数据框筛选多指标均在前10%的院校
优惠活动
大模型
产品
解决方案
定价
更多

R语言如何基于ISLR的College数据框筛选多指标均在前10%的院校

基于ISLR College数据集的多维度Top10%院校筛选实现

核心逻辑判定

任务原文要求的三个维度上均处于前10%,语义明确为:院校必须同时满足PhD占比、毕业率、招生规模三个指标各自的全数据集前10%标准,而非三个维度各自的前10%院校取并集。
之前使用head()配合order()的操作如果未做跨维度的交叉匹配,就会出现筛选范围过大的偏差。

前置环境准备

  • 加载依赖包与内置数据集
# 首次使用需先安装ISLR包
install.packages("ISLR")
# 加载包并调用College数据集
library(ISLR)
data(College)
  • 匹配维度对应的数据集字段:
    • PhD占比:对应字段PhD,即院校教职中拥有博士学位的人员占比
    • 毕业率:对应字段Grad.Rate
    • 招生规模:对应字段Enrollment,即院校在校注册学生数

标准实现流程

  1. 计算每个维度的前10%分界阈值
    前10%的分界为全数据集该指标的90%分位数:数值大于等于该阈值的样本,即为该维度上处于前10%的院校。
# 计算三个指标的90%分位值,自动忽略空值
phd_cutoff <- quantile(College$PhD, 0.9, na.rm = TRUE)
grad_cutoff <- quantile(College$Grad.Rate, 0.9, na.rm = TRUE)
enroll_cutoff <- quantile(College$Enrollment, 0.9, na.rm = TRUE)
  1. 交叉筛选符合全部条件的院校
    使用逻辑与运算,保留三个维度全部达标的样本,构造目标数据框:
# 多条件同时满足的筛选
qualified_colleges <- College[
  College$PhD >= phd_cutoff &
  College$Grad.Rate >= grad_cutoff &
  College$Enrollment >= enroll_cutoff,
]
  1. 结果有效性校验
# 查看筛选得到的院校数量
nrow(qualified_colleges)
# 查看三个维度的样本最小值,确认均达到90%分位阈值
apply(qualified_colleges[, c("PhD", "Grad.Rate", "Enrollment")], 2, min)

常见操作误区

单维度排序配合head()的写法仅能保证单一维度达标,无法匹配多维度同时满足的要求,属于典型的逻辑偏差示例:

# 错误示例:仅按PhD降序取前10%样本,另外两个维度无约束
wrong_result <- College[order(-College$PhD), ][1:round(0.1*nrow(College)), ]

这类写法得到的结果会混入PhD占比高,但毕业率、招生规模未进入前10%的院校,不符合任务要求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.03 05:54:04