SAS中的第一个声明

时间:2014-08-27 10:32:14

标签: sas

我有以下给定方式的数据

ID    typ    date 
1     A      2014jan01
1     B      2014mar01
1     B      2014apr01
1     A      2014jun01

我想用Count创建一个新变量,wrt是typ还是date。 期望的输出

ID    typ    date          count
1     A      2014jan01       1
1     B      2014mar01       1
1     B      2014apr01       2
1     A      2014jun01       1

我写了这个程序

proc sort data=have; by ID date typ;run;
data want;
set have;
by ID date typ;
if first.typ then Count=1;
else 
Count+1; run;

但它没有给出理想的结果。

1 个答案:

答案 0 :(得分:0)

@Quentin提供了正确答案(使用数据步骤中的NOTSORTED选项)。您需要了解FIRST变量如何与BY语句中的变量顺序一起使用。您的订单是ID DATE TYP,因此FIRST.ID仅为第一条记录设置为1,所有记录的FIRST.DATE设置为1,因为每次日期不同,这意味着任何后续变量(即FIRST.TYP) )所有记录也设置为1。以下是您应该运行的代码(归功于@Quentin)

proc sort data=have; by ID date typ;run;
data want;
set have;
by ID typ date notsorted;
if first.typ then Count=1;
else Count+1; 
run;