首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基线值均值变化的SAS宏

基线值均值变化的SAS宏
EN

Stack Overflow用户
提问于 2020-04-04 00:17:21
回答 1查看 165关注 0票数 0

我有以下数据:

代码语言:javascript
复制
Patient     Visit         VisitNumber    LAB        LABVALUE
001         BASELINE      1              LAB1       10
001         DAY 100       2              LAB1       15
001         DAY 200       3              LAB1       12
002         BASELINE      1              LAB1       11
002         DAY 100       2              LAB1       14
002         DAY 200       3              LAB1       12
001         BASELINE      1              LAB2       40
001         DAY 100       2              LAB2       45
001         DAY 200       3              LAB2       42
002         BASELINE      1              LAB2       41
002         DAY 100       2              LAB2       44
002         DAY 200       3              LAB2       42

我想创建下表,它总结了每次就诊时所有患者的“LABVALUE”变量(表2):

代码语言:javascript
复制
Visit       VisitNumber       LAB         MEAN            BASELINEMEAN        CHANGEBASEMEAN
BASELINE    1                 LAB1        10.5            10.5                .
DAY 100     2                 LAB1        14.5            10.5                4
DAY 200     3                 LAB1        12              10.5                1.5
BASELINE    1                 LAB2        40.5            40.5                .
DAY 100     2                 LAB2        44.5            40.5                4
DAY 200     3                 LAB2        42              40.5                1.5

我有以下代码,它从基线中为病人每次访问生成值的变化:

代码语言:javascript
复制
proc sort data=have;
  by patient lab visitnumber;
run;

data for_report;

  set have;
  by patient lab;

  retain base_visitnum base_labvalue;

  if first.patient then do;
    base_visitnum = .;
    base_labvalue = .;
  end;

  if first.lab and visit='BASELINE' then do;
    base_visitnumber = visitnumber;
    base_labvalue = labvalue;
  end;

  if not first.lab then do;
    delta_labvalue = labvalue - base_labvalue;
  end;

run;

这将生成下表:

代码语言:javascript
复制
   LAB      Visit     VisitNumber       LABVALUE        BASE_VISITNUM      BASE_LABVALUE   DELTA_LABVALUE
   LAB1     BASELINE  1                 10              1                  10              .
   LAB1     DAY 100   2                 15              1                  10              5
   LAB1     DAY 200   3                 12              1                  10              2 
   LAB1     BASELINE  1                 11              1                  11              .
   LAB1     DAY 100   2                 14              1                  11              3
   LAB1     DAY 200   3                 12              1                  11              1
   LAB2     BASELINE  1                 40              1                  10              .
   LAB2     DAY 100   2                 45              1                  10              5
   LAB2     DAY 200   3                 42              1                  10              2 
   LAB2     BASELINE  1                 41              1                  11              .
   LAB2     DAY 100   2                 44              1                  11              3
   LAB2     DAY 200   3                 42              1                  11              1

任何关于我如何生成表2的洞察力都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-08 09:43:22

这应该会让你走到那里的大部分时间:

代码语言:javascript
复制
proc sql noprint;
  create table table2 as
    select visit,
           visitnumber,
           lab,
           mean(value) as mean,
           mean(base_labvalue) as baselinemean
    from for_report
    group by visit, visitnumber, lab
  ;
quit;

我留了一些细节给你完成:-)

此外,要注意示例代码中的base_visitnumbase_visitnumber之间的不匹配。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61022255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档