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

如何基于patch列字符串分组计算sn_sp_dist列的UP与DN差值?

按GL编号分组计算UP与DN对应重复项的sn_sp_dist差值

问题分析

需要针对每个GL编号,将其UP位置各重复项的sn_sp_dist数值,减去对应重复项DN位置的数值。核心是从patch列拆分出GL编号、位置(UP/DN)和重复项序号,再按GL编号+重复项分组计算差值。

解决步骤

  1. 数据类型转换:原数据中sn_sp_dist是因子类型,需先转为数值型才能进行计算。
  2. 拆分patch列:通过下划线分割patch字段,提取GL编号、位置、重复项序号三个关键信息。
  3. 分组计算差值:按GL编号和重复项分组,匹配同组内的UP与DN数值,计算差值。

完整代码

library(dplyr)
library(tidyr)

# 将sn_sp_dist从因子转为数值型
met.ex <- met.ex %>%
  mutate(sn_sp_dist = as.numeric(as.character(sn_sp_dist)))

# 拆分patch列,提取关键信息
met_processed <- met.ex %>%
  separate(patch, into = c("gl_id", "position", "replicate"), sep = "_")

# 分组计算UP - DN的差值
diff_result <- met_processed %>%
  group_by(gl_id, replicate) %>%
  summarise(
    sn_sp_diff = sn_sp_dist[position == "UP"] - sn_sp_dist[position == "DN"],
    .groups = "drop"  # 计算后取消分组
  )

# 查看结果
print(diff_result)

结果说明

运行代码后会得到每个GL编号+重复项组合的差值:

  • GL134的三个重复项均有UP和DN数据,可正常计算差值;
  • GL22的_2重复项仅存在DN数据,_3重复项仅存在UP数据,这两组的差值会显示为NA;
  • 若需过滤掉含NA的结果,可在summarise后添加filter(!is.na(sn_sp_diff))。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 06:05:32