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

如何将多个表格的指定行范围聚合为新数据框?

解决方案

不需要用循环,用dplyr包的管道操作就能简洁高效地完成需求,步骤如下:

1. 简化兼容年份计算

直接算出三个表格的共同兼容年份范围,无需单独定义每个表格的极值:

library(dplyr)

# 计算共同的起始和结束年份
min_high <- max(min(Football$Year), min(UK_Population$Year), min(UK_House_Prices$Year))
max_low <- min(max(Football$Year), max(UK_Population$Year), max(UK_House_Prices$Year))

2. 清洗并格式化每个表格

对每个表格完成三个操作:筛选兼容年份内的数据、保留Year列、重命名xyz列以区分来源:

# 处理Football表格
table_a_clean <- Football %>%
  filter(Year >= min_high, Year <= max_low) %>%
  select(Year, xyz_1 = xyz)

# 处理UK_Population表格
table_b_clean <- UK_Population %>%
  filter(Year >= min_high, Year <= max_low) %>%
  select(Year, xyz_2 = xyz)

# 处理UK_House_Prices表格(先筛选Q4再过滤年份)
table_c_clean <- UK_House_Prices %>%
  filter(Quarter == 'Q4', Year >= min_high, Year <= max_low) %>%
  select(Year, xyz_3 = xyz)

3. 合并为目标数据框

通过inner_join按Year列合并三个清洗后的表格,得到包含Year、xyz_1、xyz_2、xyz_3的最终数据框:

combined_df <- table_a_clean %>%
  inner_join(table_b_clean, by = "Year") %>%
  inner_join(table_c_clean, by = "Year")

补充说明

  • 如果某个表格在兼容年份范围内存在缺失的Year记录,可以把inner_join换成full_join,再用replace_na()填充缺失值(比如replace_na(list(xyz_1 = 0)))。
  • 这种方法比循环更直观,代码可读性强,且dplyr的底层优化比手动循环效率更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 10:18:18