全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1402 3
2013-06-02
   a                     b             c
173.2465        5.641        28375
173.2908        5.645        7161
173.1294        5.642        767098
197.2151        9.998        51203
197.2644        9.999        13350
197.0907        9.999        1193382
197.3505        10.001        6035
173.8311        6.39        6832
197.899        10.34        7456

上述数据中,任意两行观测的变量a和b相减,若-0.5=<变量a的差值=<0.5, -0.3=<变量b的差值=<0.3,则将这些观测输出。
谢谢各位了!
结果是:

   a                                b                          c
173.2465           5.641           28375
173.2908           5.645           7161
173.1294           5.642          767098
197.2151          9.998            51203
197.2644          9.999            13350
197.0907          9.999            1193382
197.3505         10.001           6035

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2013-6-2 22:15:37
样本数据有问题吧?
只是小数部分相减的话,才可以得到期望的结果。
????
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-6-2 22:21:48
复制代码
完美解决
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-6-3 01:23:44
   将上一帖结果中的重复值和 a, b 差为零的观测去掉,就是想要的结果。

proc sql noprint;
   select count(*) into :Nobs    from aaa;
   select a into :a separated by ' ' from aaa;
   select b into :b separated by ' ' from aaa;
quit;

data bbb;
   array aa{&nobs} _temporary_ (&a);
   array bb{&nobs} _temporary_ (&b);
   set aaa end=last;
   n=_N_;
     do i = 1  to &nobs;
       a_dif = abs(a - aa(i));
       b_dif = abs(b - bb(i));
       if  a_dif <= 0.5 or b_dif <= 0.3  then output;
     end;
run;

proc sort data=bbb out=ccc (keep=a b c) nodupkey;
   by n a b;
   where a_dif^=0 and b_dif^=0;
run;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群