我有一个看起来像这样的源表
我从第一个日期开始计算Pd的ID,然后转到第二个日期,然后检查是否为Pd,然后添加ID,转到第三个日期,然后检查前一个日期的Pd是否更改,是否改变计数他们到新的小组。请查看所需的输出。你能帮忙吗?
谢谢
答案 0 :(得分:1)
在单次通过解决方案中,您需要跟踪EditText
之前的每个ID 。进行此跟踪后,您将
inv
之前的ID减少inv
的计数inv
的ID来增加inv
的计数inv
之前的ID替换为当前inv
ID的数量是动态的,并且先验未知,并且inv
值查找之前的ID都键入ID。用于动态查找的最佳DATA Step功能是inv
此外,由于计数输出是基于HASH
值的枢轴,因此您要么需要
inv
的计数inv
date
inv
和count
数据
Proc TRANSPOSE
示例代码
嵌套的DOW循环用于测试输入数据的结尾,并确保每个日期(该组)有一行输出
data have;
format id 4. date yymmdd10. inv $2.;
input id date yymmdd10. event $ e_seq inv ; datalines;
100 2018-01-01 In 1 Pd
101 2018-01-01 In 1 Pd
102 2018-02-04 In 1 Pd
100 2018-02-07 N 2 NG
101 2018-02-14 P 2 G
101 2018-02-18 A 3 Pd
100 2018-03-15 A 3 Pd
102 2018-05-01 P 2 G
103 2018-06-03 In 1 Pd
run;