1999~2024年上市公司子公司周边1~30km范围内的碳排放量面板数据

今天给大家分享一份1999~2024年上市公司子公司周边1~30km范围内的碳排放量面板数据。由 RStata 数据中心处理得到(基于 EDGAR 全球碳排放栅格数据)。

1999~2024年上市公司子公司经纬度及其所处的省市区县数据:https://rstata.duanshu.com/#/brief/course/8b5a94115254415b9b50ef25a3b7c6a5

分部门:1970~2024 年中国各省市区县各部门 CO2 排放量面板数据 & 栅格数据(EDGAR v2025):https://rstata.duanshu.com/#/brief/course/80678a034a2d4318affaeca004c5afa2

数据来源与处理方法

在研究中,我们常常需要用到企业自身的碳排放或环境表现变量,但很多企业(尤其是子公司层面)并没有公开的排放披露。一个常见的做法是:用企业周边一定范围内的碳排放总量,作为该企业自身碳排放(这个要谨慎!)或环境影响的代理变量。为此,我们基于 EDGAR(Emissions Database for Global Atmospheric Research,全球大气研究排放数据库)的逐年 CO₂ 排放栅格数据,为每家上市公司的子公司生成了 1~30km 的环形缓冲区,并提取了缓冲区内 CO₂ 排放总量。

处理方法(参考 code 文件夹中的 R 代码)大致如下:

首先,读取上市公司子公司的经纬度,并以其为中心生成不同半径(1、2、3、4、5、10、15、20、25、30 km)的圆形缓冲区:

# 读取子公司经纬度(仅保留有坐标的样本)
haven::read_dta("1999~2024年上市公司子公司经纬度及其所处的省市区县数据.dta") %>%
filter(年份 == 2024) %>%
filter(!is.na(经度)) %>%
select(zgsid, 年份, 经度, 纬度) %>%
rename(year = 年份) %>%
st_as_sf(coords = c("经度", "纬度"), crs = 4326) -> df1

# 生成 1~30km 缓冲区(半径:1~5,10,15,20,25,30 km)
for (d in c(1:5, 10, 15, 20, 25, 30)) {
df1 %>%
st_buffer(dist = units::set_units(d, km)) %>%
write_rds(paste0("上市公司子公司缓冲区/2024_", d, "km.rds"))
}

然后,用缓冲区去裁剪/提取对应年份 EDGAR 栅格(如 cntif/2024.tif)中的 CO₂ 排放之和(单位:吨):

# 读取 EDGAR CO2 排放栅格
rst <- rast("cntif/2024.tif")
tidist <- c(1:5, 10, 15, 20, 25, 30)

# 对每个缓冲区提取栅格求和(exact 加权)
res_2024 <- lapply(seq_along(tidist), function(i) {
dfsf <- read_rds(paste0("上市公司子公司缓冲区/2024_", tidist[i], "km.rds"))
ext <- terra::extract(rst, vect(dfsf), fun = "sum", na.rm = TRUE, exact = TRUE) %>%
as_tibble() %>% select(-ID)
ext <- ext %>% rename(CO2_emissions_tons = all_of(names(ext)[1]))
ext %>%
bind_cols(dfsf %>% st_drop_geometry(), .) %>%
mutate(dist = paste0(tidist[i], "km")) %>%
select(zgsid, year, CO2_emissions_tons, dist)
}) %>% bind_rows()

最后把 2024 年结果与已有的 1999~2023 年面板合并,得到 1999~2024 年完整面板(详见 code/2024_1_缓冲区生成与数据计算.R 与 code/2024_2_数据绘图与变量名修改.R)。

附件中也提供了该数据的处理代码供参考:

数据概览

为便于大家使用,我把数据汇总成了上市公司子公司—年份—缓冲区半径三个维度的碳排放面板数据,最终得到附件中的:

  • 1999~2024年上市公司子公司周边1~30km范围内的碳排放量面板数据.dta

数据共 11,934,060 条观测,包含如下变量:

变量 含义
zgsid 上市公司子公司 ID
year 年份(1999–2024)
dist 缓冲区半径(1、2、3、4、5、10、15、20、25、30 km)
CO2_emissions_tons 该子公司周边对应半径缓冲区内的 CO₂ 排放总量(吨)

该数据可作为上市公司/子公司自身碳排放或环境影响的代理变量(当企业自身排放披露不可得时),也适用于环境规制、污染暴露、企业区位选择等相关研究。

历年上市公司子公司周边平均 CO₂ 排放量如下图所示:

图表展示

下图展示了各年份上市公司子公司周边平均 CO₂ 排放量变化趋势(含 95% 置信区间):

下图展示了 CO₂ 排放量的整体分布(横轴为 log10 转换后的排放值,占比以百分比表示):

历年上市公司周边平均CO2排放量变化:

数据引用格式

由于该数据包含较多 RStata 处理的内容,在研究中使用该数据请使用清晰的方式注明数据来源于 RStata 或者 RStata 数据中心,并使用如下格式引用:

RStata 数据中心: 1999~2024年上市公司子公司周边1~30km范围内的碳排放量面板数据. 2026. https://tidyfriday.cn/rsdb2/

英文文献可以使用下面的格式引用:

RStata Data Center: Panel Data on Carbon Emissions within 1–30 km around Listed Companies’ Subsidiaries, 1999–2024. 2026. https://tidyfriday.cn/rsdb2/

关联课程/数据推荐

1990~2024 年上市公司注册地址与办公地址周边一定范围的 CO2 排放量面板数据:https://rstata.duanshu.com/#/course/c72d81d321ab49f4859f8e7488e7df6e

1990~2024 年上市公司周边的卫星反演污染物面板数据:https://rstata.duanshu.com/#/course/115cd5fb9ea04e0c88f4d3b343a2fd84

1970~2024 年中国各省市区县、乡镇 CO2 排放量面板数据 & 栅格数据(EDGAR v2025):https://rstata.duanshu.com/#/course/0753e7af840f4886a7c78ac8eafbfb50

中国各省市碳排放量是如何计算的?R 语言栅格数据转面板数据:https://rstata.duanshu.com/#/course/75de598dcfcc4ad0b9ff28bff27f6b83

使用 R 语言计算工企周边一定范围内的平均 PM2.5 浓度:https://rstata.duanshu.com/#/course/016330182fb64ecd9fab8ada0d816130

RStata 定制|栅格数据转面板数据或时间序列数据:https://rstata.duanshu.com/#/course/839afebb01d54457b42b94e87e7dc085

如果有把栅格数据批量整理成面板数据或时间序列数据的需要,可以联系李老师付费定制。

点击这里跳转到 RStata 短书平台获取附件:1999~2024年上市公司子公司周边1~30km范围内的碳排放量面板数据

评论