如何计算治疗前后每个观测值的百分比变化?附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
相关产品推荐
相关产品推荐

