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

如何在R中基于现有列按类别计算起止值差值并生成新数据集

解决方法

首先,把你的数据集转换成可直接运行的R代码:

df <- tibble(
  Day = c(1, 3, 1, 4, 1, 2, 5),
  Category = c("A", "A", "B", "B", "C", "C", "C"),
  Value = c(0.5, 0.1, 1, 0.7, 1.2, 1, 0.9)
)

你需要按类别聚合计算Day1与最后一天的Value减少量,用dplyr的group_by() + summarize()比mutate()更合适(mutate()会保留原数据所有行,而你需要每个类别一行的结果)。具体代码如下:

library(dplyr)

# 按类别分组计算差值
result <- df %>%
  group_by(Category) %>%
  summarize(
    差值 = Value[Day == 1] - Value[Day == max(Day)]
  )

# 查看结果
print(result)

代码解释

  • group_by(Category):将数据按Category分组,后续操作均针对单个类别执行
  • summarize():对每个分组进行聚合计算,输出每个类别一行的结果
  • Value[Day == 1]:提取当前类别中Day为1的Value值(每个类别仅一条Day1数据)
  • Value[Day == max(Day)]:提取当前类别中Day最大的那条数据的Value值
  • 两者相减得到从Day1到最后一天的Value减少量

运行后会得到如下结果:

# A tibble: 3 × 2
  Category   差值
  <chr>     <dbl>
1 A           0.4
2 B           0.3
3 C           0.3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 17:03:24