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

基于R语言match的子集操作:院校录取人数统计与分层排序

R语言处理院校候选人Offer数据完整方案

嘿,我看你已经完成了数据筛选和初步的频次统计工作,接下来我帮你补全院校分层的部分,还会给你一些代码优化的小建议,让整个流程更清晰易维护~

1. 数据筛选与预处理

你已经写出了核心的筛选和院校名称清理代码,我把变量名改得更具可读性(当然原代码逻辑完全没问题):

# 筛选接受Offer的候选人子集
yes_candidates <- subset(finalr, Offer.Decision == "yes")
# 清理院校名称中的所有空格(不区分大小写)
yes_candidates$School <- gsub(" ", "", yes_candidates$School, ignore.case = TRUE)

2. 统计各院校接受Offer人数并降序排序

你的频次统计代码很扎实,这里补充列名重命名的步骤,让结果数据框更直观:

# 统计各院校接受人数并降序排序,转为数据框
school_freq <- as.data.frame(
  sort(table(yes_candidates$School), decreasing = TRUE),
  stringsAsFactors = FALSE
)
# 重命名列,方便后续层级划分操作
colnames(school_freq) <- c("School", "Accept_Count")

3. 院校层级划分(铂金/黄金等)

接下来补全你未完成的分层逻辑,这里我们按照录取人数的排名区间来定义层级(你可以根据实际需求调整区间数值):

  • 铂金(Platinum):排名前13的院校
  • 黄金(Gold):排名14-30的院校
  • 白银(Silver):排名31及以后的院校

方式1:用dplyr包(更简洁易读)

# 先安装并加载dplyr包(首次使用需要安装)
# install.packages("dplyr")
library(dplyr)

# 添加排名列
school_freq <- school_freq %>% 
  mutate(Rank = row_number())

# 划分层级
school_freq <- school_freq %>% 
  mutate(Tier = case_when(
    Rank <= 13 ~ "Platinum",
    Rank <= 30 ~ "Gold",
    TRUE ~ "Silver"
  ))

方式2:用基础R(无需额外安装包)

如果你不想加载外部包,用基础R也能实现:

# 添加排名列
school_freq$Rank <- seq(nrow(school_freq))

# 从低到高赋值层级
school_freq$Tier <- "Silver"
school_freq$Tier[school_freq$Rank <= 30] <- "Gold"
school_freq$Tier[school_freq$Rank <= 13] <- "Platinum"

4. 查看最终结果

运行完以上代码后,直接打印数据框就能看到带层级的院校录取人数统计了:

# 打印完整结果
print(school_freq)

# 或者只查看铂金层级的院校
print(subset(school_freq, Tier == "Platinum"))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:13:56