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

在R中如何将数值除以上一年同期值完成收益率计算?

面板数据收益率计算简便方法

核心逻辑是先按公司维度分组,再按时间升序排序后取每家公司上一期的收盘价做运算,所有主流数据分析工具都有内置函数实现,不需要手动写循环遍历每家公司。
以下是三种最常用工具的实现方式,均只需要1-2行核心代码即可完成:

1. Python(Pandas环境)

前提要求:数据集包含公司ID、年份、调整后收盘价三个必填列

  • 先对数据集按公司、年份升序排序:
    df = df.sort_values(by=['公司ID', '年份'], ascending=True)
  • 分组计算收益率:
    df['收益率'] = df['调整后收盘价'] / df.groupby('公司ID')['调整后收盘价'].shift(1) - 1
    说明:每家公司第一年的观测值因为没有上一年收盘价,计算得到的收益率会显示为NaN,属于正常结果

2. Stata环境

前提要求:数据集已导入,包含公司ID、年份、调整后收盘价三个变量

  • 首先声明面板数据结构:
    xtset 公司ID 年份
  • 直接计算收益率:
    gen 收益率 = 调整后收盘价 / L.调整后收盘价 - 1
    说明:Stata会自动识别面板分组结构,自动跳过每家公司第一年的观测值生成缺失值

3. R(dplyr包环境)

代码实现如下:

library(dplyr)
df <- df %>%
  arrange(公司ID, 年份) %>%
  group_by(公司ID) %>%
  mutate(收益率 = 调整后收盘价 / lag(调整后收盘价, 1) - 1) %>%
  ungroup()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 08:06:06