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

如何为大规模数据集生成税收同比增长Dummy变量

分组新增税收增长Dummy变量实现方案

以下是针对大规模多国家数据集,新增税收增长Dummy变量的高效实现方法,分别提供Python(Pandas)和R语言的解决方案:

Python(Pandas)实现

针对大数据集,Pandas的分组+移位操作足够高效,无需循环:

  1. 先按Country分组,对Tax字段使用shift(1)获取每个国家上一年的税收数据
  2. 新增Tax_Growth_Dummy字段:
    • 若当年Tax > 上一年Tax,设为1
    • 若无上一年数据(即移位后为NaN),设为0
    • 其余情况(税收下降或持平)设为0

示例代码:

import pandas as pd

# 假设数据集名为df,包含Year、Country、Tax字段
df = df.sort_values(by=['Country', 'Year'])  # 确保每个国家的年份按顺序排列
df['Prev_Tax'] = df.groupby('Country')['Tax'].shift(1)
df['Tax_Growth_Dummy'] = ((df['Tax'] > df['Prev_Tax']) & df['Prev_Tax'].notna()).astype(int)

# 可选:删除临时字段Prev_Tax
df = df.drop('Prev_Tax', axis=1)

注意:如果数据集极大,可考虑使用dask.dataframe替代Pandas,支持并行处理更大规模的数据。

R语言实现

方法1:dplyr(适合常规规模大数据)

用group_by分组后,lag()函数获取上一年数据,再判断赋值:

library(dplyr)

# 假设数据集名为df
df <- df %>%
  arrange(Country, Year) %>%  # 确保年份有序
  group_by(Country) %>%
  mutate(
    Prev_Tax = lag(Tax, 1),
    Tax_Growth_Dummy = as.integer(Tax > Prev_Tax & !is.na(Prev_Tax))
  ) %>%
  ungroup() %>%
  select(-Prev_Tax)  # 删除临时字段

方法2:data.table(超大规模数据集更高效)

data.table的分组操作速度远快于dplyr,适合超大数据:

library(data.table)

setDT(df)
df <- df[order(Country, Year)]
df[, Prev_Tax := shift(Tax, 1), by = Country]
df[, Tax_Growth_Dummy := as.integer(Tax > Prev_Tax & !is.na(Prev_Tax))]
df[, Prev_Tax := NULL]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 03:02:03