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

基于参考类别的行运算:计算各时间点与Cat的数值差值

按时间分组计算类别与参考值的差值(R语言实现)

原始数据

df <- data.frame(category = rep(c('Cat','Dog','Chicken'),2),
                 value = c(3,4,5,4,6,7),
                 time = c(rep(1,3),rep(2,3)))

# 数据预览
df
#   category value time
#        Cat     3    1
#        Dog     4    1
#    Chicken     5    1
#        Cat     4    2
#        Dog     6    2
#    Chicken     7    2

需求说明

针对每个time分组,计算各category的value与参考类别(Cat)的value差值,期望输出如下:

category value time
       Cat     0    1
       Dog     1    1
   Chicken     2    1
       Cat     0    2
       Dog     2    2
   Chicken     3    2

解决方案

方法1:使用dplyr(tidyverse生态)

通过分组后批量计算差值,代码可读性强:

library(dplyr)

df_result <- df %>%
  group_by(time) %>%
  mutate(value = value - value[category == "Cat"]) %>%
  ungroup()

# 查看结果
df_result

方法2:使用base R

无需加载额外包,用ave函数实现分组运算:

df_result <- df
df_result$value <- with(df, ave(value, time, FUN = function(x) x - x[category == "Cat"]))

# 查看结果
df_result

两种方法均可得到目标输出,dplyr写法更直观,base R适合不想引入额外依赖的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 07:30:39