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

如何用dplyr或表格计算筛选符合年度数据要求的学校数据?

使用dplyr筛选符合年度数据量要求的学校数据

核心思路

先识别出2018-2022年每一年都至少有10行数据的学校,再保留这些学校的所有历史数据(包括1980-2017、2023年的记录)。


方法一:先提取合格学校,再过滤原数据(适合大数据场景)

这种方法先单独筛选出符合条件的学校列表,再用列表过滤原数据,对于10万+行的数据集效率更高:

library(dplyr)

# 1. 筛选2018-2022年的数据,统计每个学校每年的行数
# 2. 找出每一年行数都≥10的学校
qualified_schools <- Schools %>%
  filter(year %in% 2018:2022) %>%
  count(school, year) %>%  # 等价于group_by+summarize(n=n())
  group_by(school) %>%
  filter(all(n >= 10)) %>%
  pull(school) %>%
  unique()

# 3. 保留合格学校的全部行
Schools2 <- Schools %>%
  filter(school %in% qualified_schools)

方法二:在原数据中直接标记并筛选(更直观)

通过在原数据中添加辅助列标记学校是否合格,一步完成筛选:

library(dplyr)

Schools2 <- Schools %>%
  group_by(school) %>%
  mutate(
    # 检查该学校在2018-2022的每一年都满足行数≥10
    is_qualified = all(
      sapply(2018:2022, function(y) sum(year == y) >= 10)
    )
  ) %>%
  ungroup() %>%
  filter(is_qualified) %>%
  select(-is_qualified)  # 移除辅助标记列

验证结果

运行以下代码可以确认筛选结果符合预期:

# 查看筛选后各学校的年度数据分布
table(Schools2$school, Schools2$year)

# 查看筛选后的学校列表
unique(Schools2$school)

输出结果中只会保留Washington的全部数据,与你给出的Schools2目标一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 06:06:45