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

R语言:按clone与type前缀分组后计算连续行差值的问题

正确实现按clone和type前缀分组计算连续行差值的方法

核心思路

要实现需求,需要分三步:提取type列的前缀(anc/ev)、按clone和提取出的前缀分组、组内计算当前行与前一行的差值(首行自动为NA)。

完整代码示例

先构造一个模拟数据框,再执行处理逻辑:

library(tidyverse)

# 模拟原始数据框
df <- tibble(
  clone = rep(c("A", "B"), each = 6),
  type = rep(c("anc1", "anc2", "anc3", "ev1", "ev2", "ev3"), 2),
  value = c(10, 12, 15, 8, 9, 11, 13, 16, 18, 7, 8, 10)
)

# 处理逻辑
df_processed <- df %>%
  # 提取type列的前缀:匹配开头的anc或ev
  mutate(type_prefix = str_extract(type, "^anc|^ev")) %>%
  # 按clone和type前缀分组
  group_by(clone, type_prefix) %>%
  # 计算组内当前行与前一行的差值,首行自动为NA
  mutate(diff_value = value - lag(value)) %>%
  # 取消分组(根据后续操作需求可选)
  ungroup()

# 查看结果
print(df_processed)

关键说明

  1. 前缀提取:使用str_extract(type, "^anc|^ev")精准匹配type列开头的anc或ev,避免因type后缀(如数字)导致分组错误。
  2. 分组逻辑:必须同时按clone和提取出的type_prefix分组,才能保证每个clone下的anc组、ev组各自独立计算差值。
  3. 差值计算:lag(value)会调用组内的前一行value值,当前行是组内第一行时,lag(value)返回NA,差值自然为NA,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 09:35:16