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

如何在DataFrame中基于现有行计算并添加新行(dplyr实现遇阻)

问题描述

需要在DataFrame中添加c行,c行的amount是对应日期下a行的amount减去b行的amount的结果。原始数据如下:

variable <- c("a","b","a","b") 
date <- c("Jan 22","Jan 22", "Feb 22","Feb 22") 
amount <- c(100,20,100,20) 
df <- data.frame(variable, date, amount)

期望得到的DataFrame:

variable   date   amount
--------   ----   ------
a         Jan 22   100
b         Jan 22   20
c         Jan 22   80
a         Feb 22   100
b         Feb 22   20
c         Feb 22   80
解决方案(使用dplyr)

可以通过分组计算、生成新行再合并的方式实现:

library(dplyr)

# 生成c行数据
c_rows <- df %>%
  group_by(date) %>%
  summarise(
    variable = "c",
    amount = sum(amount[variable == "a"] - amount[variable == "b"]),
    .groups = "drop"
  )

# 合并原数据和c行,再按日期排序整理
result_df <- df %>%
  bind_rows(c_rows) %>%
  arrange(date, variable)

print(result_df)

代码说明

  1. 分组计算:按date分组,对每个日期计算a的amount与b的amount的差值,生成c行的记录。
  2. 合并数据:用bind_rows将原数据和生成的c行合并。
  3. 排序整理:按date和variable排序,让结果结构与预期一致。

运行后即可得到包含c行的目标DataFrame。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 22:17:08