将EXCEL代码转换为SAS

我对SAS相当陌生。 我在excel下devise了一个algorithm,我将其转换成SAS很麻烦

在Excel中:

AB -1 1 1 . 1 2 0 1 -1 . -1 2 

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

 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")) 

该代码确实工作,但我真的无法find相当于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; 

谢谢你的帮助 !

您需要利用FIRST和LAST自动variables。 它们是在您使用BY时创build的。 我在这里使用了NOTSORTED,因为你实际上并不想改变所有-1的顺序在一起(因为这将失败的目的)。 如果你是谷歌的“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;