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

如何在R中按国家分组计算各年度论文发表量增长率

按国家分组计算年度论文发表量增长率实现方法

最常用的实现方式是基于Python的pandas库完成,操作核心逻辑如下:

  • 第一步:预处理数据,确保每个国家的记录按年份升序排列,避免错位取数
  • 第二步:按country字段分组,取每条记录对应上一年度的论文发表量
  • 第三步:代入给定公式计算增长率,每个国家的首年记录因无上一年数据,增长率为空值,符合业务逻辑

完整可运行代码

import pandas as pd

# 加载/构造数据集
data = [
    ["South Kora", 2002, 23456],
    ["South Kora", 2003, 24456],
    ["South Kora", 2004, 24256],
    ["South Kora", 2005, 29456],
    ["South Kora", 2006, 23488],
    ["Pakistan", 2002, 4333],
    ["Pakistan", 2003, 4125],
    ["Pakistan", 2004, 3567],
    ["Pakistan", 2005, 5432],
    ["Pakistan", 2006, 2345],
    ["Armenia", 2002, 567],
    ["Armenia", 2003, 678],
    ["Armenia", 2004, 765],
    ["Armenia", 2005, 987],
    ["Armenia", 2006, 713]
]
df = pd.DataFrame(data, columns=["country", "year", "publication"])

# 先按国家、年份排序,保证顺序正确
df = df.sort_values(by=["country", "year"], ascending=[True, True])

# 分组取同国家上一年的发表量
df["last_year_pub"] = df.groupby("country")["publication"].shift(1)

# 按公式计算增长率,结果保留2位小数
df["growth_rate(%)"] = ((df["publication"] - df["last_year_pub"]) / df["last_year_pub"] * 100).round(2)

# 可选:删除临时辅助列
df = df.drop(columns=["last_year_pub"])

# 打印结果
print(df)

计算结果示例

运行代码后得到的数据集如下,和手动计算结果一致:

country  year  publication  growth_rate(%)
0      Armenia  2002          567             NaN
1      Armenia  2003          678           19.58
2      Armenia  2004          765           12.83
3      Armenia  2005          987           29.02
4      Armenia  2006          713          -27.76
5     Pakistan  2002         4333             NaN
6     Pakistan  2003         4125           -4.80
7     Pakistan  2004         3567          -13.53
8     Pakistan  2005         5432           52.28
9     Pakistan  2006         2345          -56.83
10  South Kora  2002        23456             NaN
11  South Kora  2003        24456            4.26
12  South Kora  2004        24256           -0.82
13  South Kora  2005        29456           21.44
14  South Kora  2006        23488          -20.26

如果需要用SQL实现,核心逻辑完全一致:用窗口函数LAG(publication) OVER (PARTITION BY country ORDER BY year)取上一年发表量,再代入增长率公式计算即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 13:57:08