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

基于第三列值计算R中同一列两行差值(适用于Spotfire)

在Spotfire的R语言中计算相对于基线的Record差值

方法思路

按RecordId分组,提取每组基线(Visit = "Baseline")的Record值,再用每行的Record与基线值计算差值。根据你给出的示例,这里分两种常见计算逻辑:

  • 逻辑1:当前值 - 基线值(保留正负,如筛查24-20=4,访视5为15-20=-5)
  • 逻辑2:基线值与当前值的差值绝对值(如示例中访视5得到5)

具体代码

假设你的数据集在Spotfire中对应的R数据框名为df,可使用dplyr包实现(Spotfire默认支持此包):

逻辑1:计算带正负的差值

library(dplyr)

# 分组计算差值
df <- df %>%
  group_by(RecordId) %>%
  mutate(`Change in Record from Baseline` = Record - first(Record[Visit == "Baseline"])) %>%
  ungroup()

# 将基线行的差值设为空,匹配示例格式
df <- df %>%
  mutate(`Change in Record from Baseline` = ifelse(Visit == "Baseline", NA, `Change in Record from Baseline`))

逻辑2:计算差值的绝对值

library(dplyr)

# 分组计算绝对值差值
df <- df %>%
  group_by(RecordId) %>%
  mutate(`Change in Record from Baseline` = abs(first(Record[Visit == "Baseline"]) - Record)) %>%
  ungroup()

# 将基线行的差值设为空,匹配示例格式
df <- df %>%
  mutate(`Change in Record from Baseline` = ifelse(Visit == "Baseline", NA, `Change in Record from Baseline`))

补充说明

  • first(Record[Visit == "Baseline"])用于精准提取每组中唯一的基线Record值,避免重复计算
  • 在Spotfire中,你可以将这段代码作为数据函数运行,或在支持R表达式的计算列中直接调用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 05:18:19