SAS/SAS宏-逐行读取观察值

SAS/SAS宏-逐行读取观察值,sas,sas-macro,Sas,Sas Macro,样本数据: PatID Strata1 Strata2 Allocated TG 1 1 1 T1 2 1 2 T2 3 2 3 T1 4 1 3 . 5 2 2 . 6 1 3

样本数据:

PatID Strata1 Strata2 Allocated TG      
    1       1       1           T1
    2       1       2           T2
    3       2       3           T1
    4       1       3            .
    5       2       2            .
    6       1       3            .
    7       1       3            .
    8       2       4            .
我有两种情况之一的患者

我必须根据STRAT计算分配的TG以及之前所有患者的分配TG。在上述示例中,分配的TG用于3名患者

对于第4名患者,分配的TG将如下计算:

Strata1的价值是多少

  • 如果为1,当1时,有多少先前患者被分配到分配的TG T1;当1时,有多少先前患者被分配到分配的TG T2

  • 如果为2,则1时有多少先前患者分配到分配的TG T1计数1时有多少先前患者分配到分配的TG T2计数

  • 同样,对于Strata2,所有先前患者的计数根据每个分层分配TG

    在所有这些之后,我将得到每个的一些值。基于输出值,分配编号越少,TG(T1/T2)将被分配


    在此之后,它必须对患者5进行计算。同样,它必须对之前的4名患者进行计算。

    程序员更喜欢批处理模式的方法,而不是逐行进行,以获得更快的性能。
    可以在循环中使用firstobs和obs。对于batchmode,使用obs-firstobs作为1000或一些数字,对于逐行使用obs=firstobs+1

    欢迎使用SO。你应该提供更多关于你想做什么计算的细节。我猜你想在第(n-1)次观察的基础上对第n次观察做点什么,但是你需要提供更多的信息。如果你能提供一个小例子,说明你想要实现什么(比如6行数据和你期望的结果),那将非常有帮助。但最有可能的是,您应该查看retain语句。您好,我已经更新或改进了我的问题。请现在查看。:)我对你的问题进行了编辑以使其更清楚,但我认为你仍然需要提供更清楚的信息。您是否可以发布一个数据集,其中包含剩余5行的计算TG2?它们应该是什么?而且,这听起来像是可以订购的——也就是说,在计算患者5之前先计算患者4是很重要的,这是真的吗?最后,你需要向我们展示你已经尝试过的东西;这不是一个“为你做你的工作”的网站,而是关于具体问题的帮助。你在说什么?如果你无法手动解决上面的例子,你将无法在这里得到任何帮助。我建议你花些时间研究如何做到这一点,然后编辑你的问题,以反映你可能遇到的问题。