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

如何计算治疗前后每个观测值的百分比变化?附R数据示例

计算治疗前后观测值的百分比变化(R语言实现)

核心计算逻辑

百分比变化以治疗前数值为基准,公式为:
((治疗后数值 - 治疗前数值) / 治疗前数值) * 100
结果为正代表数值上升,为负代表数值下降。

步骤1:构造完整数据集

如果你的dat还未整理成标准数据框,先运行以下代码构造数据集:

dat <- data.frame(
  HOMAIR_base = c(1.8, 8.55, 2.34, 4.08, 3.58, 
                  2.12, 4.56, 4.6, 1.27, 4.18, 2.3, 3.96, 10.05, 3.94, 2.39, 4.5, 
                  3.82, 10, 3.06, 1.73, 2.96, 5.6, 1.52, 7.71, 2.94, 4.39, 2.64, 
                  1.5, 2.92, 2.41),
  HOMAIR_4 = c(2.39, 0.42, 1.32, 1.93, 
               2.46, 3.08, 3.52, 2.11, 6.82, 2.23, 1.69, 3.91, 3.64, 4.08, 1.77, 
               3.7, 12, 4.45, 3.42, 1.96, 3.63, 5.21, 1.52, 7.71, 2.46, 4.42, 
               8.39, 0.88, 3.97, 3.03)
)

步骤2:计算百分比变化

直接在数据框中新增pct_change列,用round()函数控制小数位数(示例保留2位):

dat$pct_change <- round(((dat$HOMAIR_4 - dat$HOMAIR_base) / dat$HOMAIR_base) * 100, 2)

查看计算结果

运行以下代码查看前6行数据及结果:

head(dat)

输出示例:

HOMAIR_base HOMAIR_4 pct_change
1        1.80     2.39       32.78
2        8.55     0.42      -95.09
3        2.34     1.32      -43.59
4        4.08     1.93      -52.70
5        3.58     2.46      -31.28
6        2.12     3.08       45.28

特殊情况处理

如果数据中存在治疗前值为0的情况,需避免除以0错误,可添加条件判断标记这类值:

dat$pct_change <- ifelse(dat$HOMAIR_base == 0, NA, round(((dat$HOMAIR_4 - dat$HOMAIR_base) / dat$HOMAIR_base) * 100, 2))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 00:35:31