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

基于行对应列值向DataFrame添加新行:获取各模型净零排放年份

问题描述

我正在分析气候数据,需要找出每个模型(列)达到净零排放的年份(行)。
我已通过循环提取出每个模型首次出现负值(即负排放)的数值(对应截图中的nz_temp行)。
现在我需要创建一行来记录该负值对应的年份。
我尝试使用pull函数,但完全陷入困境!

气候数据表格截图1
气候数据表格截图2

解决方案

假设你的数据框名为climate_data,年份存储在名为year的列中,其余列为各模型的排放数据,可通过以下步骤实现需求:

  1. 转长格式处理:将宽格式数据转为长格式,便于按模型分组查找首次负排放年份
library(tidyverse)

long_format <- climate_data %>%
  pivot_longer(cols = -year, names_to = "model", values_to = "emissions")
  1. 提取各模型首次净零年份:按模型分组,筛选出首次出现负排放的记录,提取对应年份
nz_year_df <- long_format %>%
  group_by(model) %>%
  filter(emissions < 0) %>%
  slice_head(n = 1) %>%
  select(model, net_zero_year = year)
  1. 转为宽格式并添加到原数据:将结果转回宽格式,作为新行合并到原数据框中
# 生成待添加的行
nz_row <- nz_year_df %>%
  pivot_wider(names_from = model, values_from = net_zero_year) %>%
  mutate(year = "net_zero_year")  # 为该行命名标识

# 合并到原数据
updated_data <- bind_rows(climate_data, nz_row)

特殊情况处理

如果你的年份是作为行名存在而非单独列,先将行名转为列:

climate_data <- climate_data %>%
  rownames_to_column(var = "year")

这种方法无需手动循环,利用tidyverse的向量式操作更高效且易维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 14:12:45