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

R语言如何按Task前10位匹配分组计算Frame列绝对差值

解决方法

你之前的代码没有先按照Task前10位的规则分组,直接对全表计算差值,所以不符合需求。可以用dplyr的分组逻辑实现预期效果,完整代码如下:

library(tidyverse)

df %>% 
  # 提取Task前10位作为分组标识
  mutate(group_id = substr(Task, 1, 10)) %>% 
  # 按分组标识分组
  group_by(group_id) %>% 
  # 组内计算差值
  mutate(Diff = ifelse(row_number() == 1 & n() == 2, abs(Frame[1] - Frame[2]), NA_integer_)) %>% 
  # 可选:移除不需要的分组标识列
  ungroup() %>% 
  select(-group_id)

逻辑说明

  • 首先通过substr(Task,1,10)提取所有Task前10个字符,作为分组的唯一键,把前10位相同的行归为同一组
  • 分组后判断:如果当前是组内第一行、且组内共有2条记录,就计算两条记录Frame的绝对差值填到第一行的Diff列,其余情况Diff留空
  • 最后如果不需要分组用的group_id列,可以用select移除

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 21:57:05