SAS中文论坛

标题: 如何比较一维数据里的数 [打印本页]

作者: shiyiming    时间: 2010-6-18 06:00
标题: 如何比较一维数据里的数
[color=#FF00FF:20t1kv9x]比如我想比较如下一组数里在两值相等的位置做个记号。确切说是前一个和它的后一个是否相等就ok!
非常感谢!
x    i
2 .
3 .
5  1
5 .
8 .
9 .[/color:20t1kv9x]
作者: shiyiming    时间: 2010-6-18 09:17
标题: Re: 如何比较一维数据里的数
连着3个5,4个5,怎么办?
data step
[code:39wuk1i3]data temp;
        input x;
        id=_n_;
datalines;
2
3
5
5
8
9
;
data temp1(drop=x rename=(temp=x));
        set temp(keep=x) end=last;
        temp=lag(x);
        if x=temp then i=1;
        if _n_ gt 1 then output;
        if last then do;
                        temp=x;
                        call missing(x,i);
                        output;
                end;
run;[/code:39wuk1i3]
sql
[code:39wuk1i3]proc sql;
        create table temp2 as
                select a.x,case
                                                when a.x=b.x then 1
                                                else .
                                        end as i
                        from temp a left join temp b
                                on a.id=b.id-1
                        order by a.id;
quit;[/code:39wuk1i3]
作者: shiyiming    时间: 2010-6-19 01:01
标题: Re: 如何比较一维数据里的数
[color=#BF4080:aa3jsf9n]版主的程序都写的特别完整和专业。。我学到不少函数的使用,但我还想知道比如用_n_知道了数据id后,能不能直接找出满足某种条件的id呢?
比如把满足x值等于5的id值赋给p值:  
data a;
set temp;
id=_n_;
p=_n_  where x=5  ; ??[/color:aa3jsf9n]
作者: shiyiming    时间: 2010-6-19 08:22
标题: Re: 如何比较一维数据里的数
没看明白,大概这样吧
[code:21zycvxx]data a;
   set temp;
   if x=5 then p=_n_;
run;[/code:21zycvxx]




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