全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
11603 6
2016-01-21
悬赏 50 个论坛币 已解决
部分数据如下所示:
复制代码
     问题是这样的。我想取出每个观测中小于2的值以及这个值之后离他最近的大于2的值,建立一个数据集。如果一条记录中有多个小于2的值,只要第一个小于2的变量(如第19个观测)。如果某个记录只有小于2的变量(如第三个观测)或者所有的变量都小于2(如第47个观测)则表这条记录为删失。
在试着用

  %do i=1 %to 5;
      %let j= %eval(&i+1);

的循环时只能实现部分功能,特来请教。


最佳答案

孤单的我们 查看完整内容

程序里加了条件:var1 var2有1个缺失,则删除观测。
二维码

扫码加我 拉你入群

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

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

全部回复
2016-1-21 16:14:38
复制代码


程序里加了条件:var1 var2有1个缺失,则删除观测。
二维码

扫码加我 拉你入群

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

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

2016-1-22 03:59:03
data test_new (drop=flag_2) ;
  set test ;
  array test test1-test5 ;
  do i = 1 to 5 ;
    if test[i] > 2 then flag_2 = 1 ;
        if test[i] < 2 and low_2 = . then low_2=test[i] ;
        if low_2 ne . and high_2 = . and test[i] > 2 then high_2 = test[i] ;
  end ;
  if flag_2 = . then delete ;
  drop i ;
run;
二维码

扫码加我 拉你入群

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

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

2016-1-22 09:08:20
1. 你有点没说明白:
...或者所有的变量都小于2(如第47个观测)...
第47条观测是:47 2.56 . . 0.4 .

2. 我给你推荐一个函数,smallest,你把这个函数的用法看明白,你就知道咋做了。
二维码

扫码加我 拉你入群

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

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

2016-1-22 11:38:33
孤单的我们 发表于 2016-1-21 17:19
程序里加了条件:var1 var2有1个缺失,则删除观测。
do i=1 to dim(test) until var1; 这种句子能工作吗?
二维码

扫码加我 拉你入群

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

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

2016-1-23 05:04:28
Here you go.

data test1(drop=i );
set test;
array test{*} test1-test5;
do i=1 to dim(test) ;
if ^missing(test{i}) & test{i}<2  then do;  keep=test{i} ; i=dim(test); end;
end;
if max(of test:)<2 then delete;
run;
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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