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

Julia中按年份和行业计算ROA百分比变化率的问题

解决按行业逐年计算ROA百分比变化率的问题

问题根源

你之前的代码把分组键设成了[:year, :sector],这会让每个分组只包含单条数据(每个年份对应每个行业只有一行),所以pct_change函数每次处理的都是长度为1的向量,自然输出全是missing。

正确解法

应该按**行业(sector)**单独分组,在每个行业组内按年份排序后,计算ROA的逐年变化率,用transform函数可以保留原DataFrame的所有列并新增结果列:

using DataFrames

# 定义百分比变化函数
function pct_change(input::AbstractVector{<:Number})
    [i == 1 ? missing : (input[i]-input[i-1])/input[i-1] for i in eachindex(input)]
end

# 先按行业分组,组内按年份排序,然后计算变化率
df_result = transform(
    groupby(sort(df_roa_kvkt, [:sector, :year]), :sector),
    :roa => pct_change => :proportion
)

# 按年份、行业排序,方便查看
sort!(df_result, [:year, :sector])

结果示例

运行后得到的df_result包含year、sector、roa、proportion四列,部分结果如下:

15×4 DataFrame
 Row │ year   sector        roa    proportion 
     │ Int64  String        Float64 Float64?
─────┼──────────────────────────────────────────
   1 │  2017  Agriculture   -1.82  missing
   2 │  2017  Construction  -1.15  missing
   3 │  2017  Services      -1.78  missing
   4 │  2018  Agriculture   -1.55  0.148352
   5 │  2018  Construction  -1.05  0.0869565
   6 │  2018  Services      -1.56  0.123596
   ... # 后续行省略

补充说明

  • 每个行业的第一年因为没有前一年数据,所以proportion为missing,符合预期
  • 如果需要将变化率转为百分比格式,可以在函数里乘以100,或者后续处理:df_result.proportion = df_result.proportion .* 100

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 18:25:29