将EXCEL代码转换为SAS

时间:2013-11-22 19:18:28

标签: excel count sum sas

我对SAS很新。 我在excel下设计了一个算法,我在将它转换为SAS时遇到了很多麻烦

在Excel中:

A B
-1 1
1 .
1 2
0 1
-1 .
-1 2

从A到B的作用是它计算连续发现A的次数。例如(-1)只在这里一次,所以1.然后1,1,我跟着彼此。 (=不重要)后跟2(因为你有两个1)。 等等。 我在B列的excel代码是: 第一行:

IF (A1 = A2, NA(), 1)

对于B列的其余部分(例如第10行):

IF(A10 = A11, NA(), COUNTIF($A$1:A9,"="&NA()) + COUNT ($A$1:A9) + 1 - SUMIF($A$1:A9,"<>#N/A"))

代码确实有效,但我真的找不到SAS中的COUNTIF,SUMIF和COUNT ....

到目前为止,这是我的代码

data test;
input sign;
cards;
-1
1
1
0
-1
-1
;
run;

*create a lead for the equality IF
proc expand data=test out=test2;
convert sign= sign_lead / transformout = (lead 1);
quit;

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您需要利用FIRST和LAST自动变量。它们是在您使用BY时创建的。我在这里使用NOTSORTED,因为你实际上并不想改变所有-1s在一起的顺序(因为这会破坏目的)。如果你谷歌“FIRST LAST Variable SAS”,这在各种论文中都有很好的介绍。

data test;
input sign;
cards;
-1
1
1
0
-1
-1
;
run;

data want;
set test;
by sign notsorted;
if first.sign then _tempcounter=0;
_tempcounter+1;
if last.sign then b=_tempcounter;
drop _tempcounter;
run;
proc print data=want;
run;