sas - 使用 SAS 的条件转置
问题描述
对于多个患者,我有一个如下所示的数据集。我试图从相应变量的基线值中减去每个访问值(有时会丢失)。
Data Have:
Patient Variable Value Visit
A Height 100 Baseline
A Weight 50 Baseline
A HDCIRC 30 Baseline
A BMI 50 Baseline
A Height 100 a
A Weight 50 a
A HDCIRC 30 a
A BMI 50 a
A Height 100 b
A Weight 50 b
Data Want:
Patient Variable Value Visit BASELINE Change
A Height 100 Baseline 100 0
A Weight 50 Baseline 50 0
A HDCIRC 30 Baseline 30 0
A BMI 50 Baseline 50 0
A Height 120 a 100 20
A Weight 50 a 50 0
A HDCIRC 30 a 30 0
A BMI 34.7 a 50 -15.3
A Height 150 b 100 50
A Weight 51 b 50 1
我的尝试是首先创建 BASELINE,然后计算变化。为了获得 BASELINE,我看到有些人使用滞后或差异函数。如何正确创建 BASELINE 变量?
proc sort data=have;
by patient visit;
;
data want;
set have;
by patient visit;
difstamp = dif(visit);
if first.patient then do;
dif=0;
end;
else dif=difstamp;
drop difstamp;
run;
proc sort data=want;
by timestamp;
run;
解决方案
它可能有助于按患者变量排序,以便您获得基线。如果您的 VISIT 变量没有正确地将 BASELINE 排序到第一次访问,那么您可以使用 WHERE= dataset 选项来确保基线首先出现。
data have;
input Patient $ Variable $ Value Visit $;
cards;
A Height 100 Baseline
A Weight 50 Baseline
A HDCIRC 30 Baseline
A BMI 50 Baseline
A Height 120 a
A Weight 50 a
A HDCIRC 30 a
A BMI 34.7 a
A Height 150 b
A Weight 51 b
;
proc sort;
by patient variable visit;
run;
data want;
set have(in=in1 where=(visit='Baseline'))
have(in=in2 where=(visit^='Baseline'))
;
by patient variable ;
if first.variable then do;
if in1 then baseline=Value;
else baseline=.;
retain baseline;
end;
if n(value,baseline)=2 then change=value-baseline;
run;
结果:
Obs PATIENT VARIABLE VALUE VISIT BASELINE CHANGE
1 A BMI 50.0 Baseline 50 0.0
2 A BMI 34.7 a 50 -15.3
3 A HDCIRC 30.0 Baseline 30 0.0
4 A HDCIRC 30.0 a 30 0.0
5 A Height 100.0 Baseline 100 0.0
6 A Height 120.0 a 100 20.0
7 A Height 150.0 b 100 50.0
8 A Weight 50.0 Baseline 50 0.0
9 A Weight 50.0 a 50 0.0
10 A Weight 51.0 b 50 1.0
推荐阅读
- git - 子项目提交没有出现
- android - 如何显示没有 2 个导出的图像?
- conda - 在(基础)环境中意外使用“conda deactivate”后如何“conda activate base”?
- angular - 如何使用角度从 excel 中读取超链接数据?
- azure - jvm中不存在Spark会话
- laravel - Laravel 全局范围:ErrorException 未定义属性:App\Models\User::$company
- c++ - 在 C++ 中按引用返回与按值返回
- java - 子类与通用通配符捕获不匹配
- python - 如何在 python 中打开 .vol 文件(来自 3D 超声)?
- unity3d - 聚光灯破碎的阴影