我有以下给定方式的数据
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;
但它没有给出理想的结果。
答案 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;