You need to enable JavaScript to run this app. 在R中如何用少循环方法基于两个关联数据集快速计算各name对应年份范围
优惠活动
大模型
产品
解决方案
定价
更多

在R中如何用少循环方法基于两个关联数据集快速计算各name对应年份范围

实现方案

核心逻辑

全程采用底层优化的向量化运算,无显式循环,适配大数据量的高性能处理需求,步骤如下:

  • 按公共列code关联两个数据集,得到包含code、name、Year的中间表
  • 按name分组,计算每组内年份的最大值减最小值得到Range,将计算结果匹配到对应分组的所有行
  • 筛选保留code、Year、Range三列得到最终结果

Python(Pandas)实现代码

import pandas as pd

# 读取两个数据集(实际使用时替换为pd.read_csv等读取接口即可)
df_name = pd.DataFrame({
    "code": [115, 120, 125, 130, 140],
    "name": ["A", "B", "A", "C", "A"]
})
df_year = pd.DataFrame({
    "code": [115, 140, 120, 130, 125],
    "Year": [2015, 2020, 2017, 2019, 2011]
})

# 关联数据集+分组计算Range
result = pd.merge(df_name, df_year, on="code", how="inner")
result["Range"] = result.groupby("name")["Year"].transform(lambda x: x.max() - x.min())
# 输出指定列
result = result[["code", "Year", "Range"]]

R(dplyr)实现代码

library(dplyr)

# 读取两个数据集(实际使用时替换为read.csv等读取接口即可)
df_name <- tibble(
  code = c(115, 120, 125, 130, 140),
  name = c("A", "B", "A", "C", "A")
)
df_year <- tibble(
  code = c(115, 140, 120, 130, 125),
  Year = c(2015, 2020, 2017, 2019, 2011)
)

# 关联+分组计算+筛选列
result <- df_name %>% 
  inner_join(df_year, by = "code") %>% 
  group_by(name) %>% 
  mutate(Range = max(Year) - min(Year)) %>% 
  ungroup() %>% 
  select(code, Year, Range)

两种实现的运算效率都远高于自定义循环实现,可直接用于千万级数据量的处理场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 20:18:03