我有一个包含以下两个变量的数据集(它包含更多,但为了简单起见,我将只讨论这两个):日期和热点
Date是SAS日期变量,Hot是二进制(0,1)变量。
我想读取数据集,并有一个count变量,用于计算Hot变量为1的行数。
这是我的数据的示例:
Date Hot
14JUN2010 0
15JUN2010 1
16JUN2010 1
17JUN2010 0
18JUN2010 1
19JUN2010 1
20JUN2010 1
21JUN2010 0
这是我想要数据的示例:
Date Hot HotDays
14JUN2010 0 0
15JUN2010 1 1
16JUN2010 1 2
17JUN2010 0 0
18JUN2010 1 1
19JUN2010 1 2
20JUN2010 1 3
21JUN2010 0 0
我尝试过很多不同的东西,但都没有。我已经通过处理了解了retain语句和group,但我还没有想出如何使这些策略适应二进制变量计算顺序日期。
感谢您的帮助。
答案 0 :(得分:0)
您可以利用HOT的值并处理数据BY HOT NOTSORTED以检测何时重置计数器。
data hot;
input Date:date9. Hot;
cards;
14JUN2010 0
15JUN2010 1
16JUN2010 1
17JUN2010 0
18JUN2010 1
19JUN2010 1
20JUN2010 1
21JUN2010 0
;;;;
run;
data hotdays;
set hot;
by hot notsorted;
if first.hot then hotdays=0;
hotdays + hot;
run;