SAS中文论坛

标题: DATA步:一行数据中找出不重复的观测个数 [打印本页]

作者: shiyiming    时间: 2010-4-6 18:18
标题: DATA步:一行数据中找出不重复的观测个数
大家好,请问高手这么一个问题,

我的数据是这样的:每行7个数
2 5 9 10 20 36 45
14 17 23 17 26 20 21
10 10 12 12 17 32 56

问题是利用data步写出一个新变量count,第一行数据由于各个数值不同,因此为7,第二行数据有一对17,因此为6,而第三行数据有一对10和12,因此值为5。
作者: shiyiming    时间: 2010-4-6 20:45
标题: Re: DATA步:一行数据中找出不重复的观测个数
[code:35fhnso8]data raw;
        input var1-var7;
        array arr{*} var1-var7;
        array temp{7} _temporary_;
        do count=1 to dim(arr);
                temp(count)=arr(count);
        end;
        call sortn(of temp(*));
        do count=1 to dim(temp)-1;
                temp(count)=ifn(temp(count+1)-temp(count),1,.);
        end;
        count=n(of temp(*));
datalines;
2 5 9 10 20 36 45
14 17 23 17 26 20 21
10 10 12 12 17 32 56
;[/code:35fhnso8]
作者: shiyiming    时间: 2010-4-6 21:40
标题: Re: DATA步:一行数据中找出不重复的观测个数
真是太感谢hopewell,太感谢~~为这问题忙了一下午,看来学的东西还是很多呀
作者: Qiong    时间: 2010-4-8 11:17
标题: Re: DATA步:一行数据中找出不重复的观测个数
恶搞版
[code:1wxdyt3y]data v;
input var1-var7;
cards;
2 5 9 10 20 36 45
14 17 23 17 26 20 21
10 10 12 12 17 32 56
;
run;

proc transpose data=v out=_v;
run;
ods output NLevels=vv;
proc freq data=_v nlevels ;
tables _numeric_ /noprint missing ;
run;
data v;
merge vv(keep=NLevels)  v ;
run;[/code:1wxdyt3y]




欢迎光临 SAS中文论坛 (http://www.mysas.net/forum/) Powered by Discuz! X3.2