如何将 TEMP 的第一条记录标记回正常

  • 本文关键字:记录 一条 TEMP sas
  • 更新时间 :
  • 英文 :


将 TEMP 的第一条记录标记为正常(不超过 37C(。

    data temp;
      input ID $ SEQ $ TEMP ;
      datalines;
    001  1  37.3
    001  2  37.2
    001  3  36.3
    001  4  37.3
    001  5  36.9
    001  6  36.9
    002  1  37.3
    002  2  37.2
    002  3  36.3
    002  4  35.3
    002  5  36.9
    002  6  36.9
    003  1  37.3
    003  2  37.1
    003  3  38.2
    003  4  39.3
    004  1  36.3
    004  2  38.2
    004  3  36.5
    004  4  36.4
    ;
run;

问题是:

如何将 TEMP 的第一条记录标记回正常(不超过 37C(。

这里有 2 名患者,每位患者有 6 个温度观察,2 名患者每人有 4 个温度观察。如果患者的体温最终恢复正常(最后体温<37(,那么,标记出第一个小于37的温度记录。

以ID = 001患者为例。

001  1  37.3
001  2  37.2
001  3  36.3
001  4  37.3
001  5  36.9
001  6  36.9

由于第 6 个临时记录是 36.9,小于 37,终于恢复正常,然后,标记出第 5 个记录。

001  1  37.3  0
001  2  37.2  0
001  3  36.3  0
001  4  37.3  0
001  5  36.9  1
001  6  36.9  0

对于患者 ID = 003。

003  1  37.3
003  2  37.1
003  3  38.2
003  4  39.3

由于该患者的最后温度大于37。结果应如下所示:

003  1  37.3  0
003  2  37.1  0
003  3  38.2  0
003  4  39.3  0

这个问题真的让我很沮丧。我将非常感谢您的帮助,非常感谢。

我得到了它。

    data temp;
        set temp;
        retain dontflaganymore;
        by ID;
        if first.ID then dontflaganymore=0;
        if TEMP<37 AND not dontflaganymore then do; flag=1; dontflaganymore=1; end;
        else flag=.;
        drop dontflaganymore;
    run; 

这个想法是

  1. 使用虚拟变量dontflaganymore来了解我们是否已经标记了温度(为 <37(。

  2. 保留比虚拟变量能够在下一行使用它。

  3. 并在每次我们有新 ID 时重置该变量 ( by ID; if first.ID then do; (

非常好的问题,我也一直在研究这个问题。
秘诀是从最后一个到第一个查找。

data TempRst;
    set Temp nobs = nobs;
    by ID SEQ;
    LagTemp = Lag(Temp);
    if first.ID then LagTemp = .;
    do i = nobs to _N_ by -1;
        set Temp(rename=(ID=IDTmp SEQ=SEQTmp Temp=TempTmp)) point = i;
        if ID = IDTmp and SEQ < SEQTmp and TempTmp > 37 then do;
            Flag = 0;
            leave;
        end;
        if ID = IDTmp and SEQ < SEQTmp and Temp < 37 and LagTemp > 37 then Flag = 1;
    end;
    Flag = coalesce(Flag,0);
    drop IDTmp SEQTmp TempTmp LagTemp;
run;

而且leave陈述非常重要,以防止在发现一个观察结果比 37 Temp更刨丝后继续搜索。

最新更新