将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;