SAS:通过枚举创建类
问题描述:
这可能很简单。SAS:通过枚举创建类
我需要创建一个类似于一个顺序的变量,但顺序只会在每次第二次观察之后才会增加。
在此先感谢!
date order
1-1-10 1
2-1-10 1
3-1-10 2
4-1-10 2
5-1-10 3
6-1-10 3
7-1-10 4
7-1-10 4
etc
答
您将使用两个主要工具:mod
函数和sum语句。 sum语句看起来像不正确的语法,但它是retain
的特殊情况。
_N_
是一个特殊的变量,充当您的观察计数器。每当您的data
步骤从顶部到底部循环(即从data
到run
),_N_
递增1。
通过在_N_
上使用mod
,我们可以对结果为1的每两个观察值增加一个计数器。换句话说,如果您将观测计数除以2并得到余数1,则将1加1 order
。
例如:
_N_ _N_/2 Remainder Operation Value
1 1/2 1 0+1 1
2 2/2 0 N/A 1
3 3/2 1 1+1 2
4 4/2 0 N/A 2
5 5/2 1 2+1 3
6 6/2 0 N/A 3
最终,我们正在做的,我们在特定的条件下增加一些值的操作,随身携带着,并重复。
这怎么代码如下:
data want;
set have;
if(mod(_N_, 2) = 1) then order+1;
run;
答
在数据步骤中,您可以使用自动变量_n_
(例如, ceil(_n_/2)
。
在SQL中,monotonic()
函数可以做同样的工作。
或者因为MOD(INT; 2)返回0或1,你可以简单地使用'为了+ MOD(_N_,2);' – Tom