全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2508 2
2012-08-23
悬赏 10 个论坛币 已解决
我有一组数据a;含有 value 和 date两组数据
复制代码
我希望 如果有value>=10, 如果date相同, 所有value都变为空值"."; 否则value 不变
这样 a的结果应该是
. 1
. 1
. 1
. 1
3 2
5 2
6 2
8 2
. 3
. 3
. 3
. 3
想请教该怎么实现

最佳答案

bobguy 查看完整内容

Use double set statements will do it. It is much simpler than you thought. data a; input value date; datalines; 2 1 3 1 4 1 10 1 3 2 5 2 6 2 8 2 11 3 13 3 8 3 7 3 ; data t2; retain maxv .; do until(last.date); set a; by date; if first.date then maxv=.; maxv=max(maxv,value); end; do unt ...
二维码

扫码加我 拉你入群

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

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

全部回复
2012-8-23 03:16:46
Use double set statements will do it. It is much simpler than you thought.

    data a;
       input value date;
       datalines;
    2 1
    3 1
    4 1
    10 1
    3 2
    5 2
    6 2
    8 2
    11 3
    13 3
    8 3
    7 3
    ;

data t2;
  retain maxv .;
  do until(last.date);
    set a;
        by date;
        if first.date then maxv=.;
        maxv=max(maxv,value);
  end;
  do until(last.date);
  set a;
  by date;
    if maxv >=10 then value=.;
        else;
        output;
  end;
  run;

  proc print;run;
二维码

扫码加我 拉你入群

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

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

2012-8-24 02:33:34
bobguy 发表于 2012-8-23 03:16
Use double set statements will do it. It is much simpler than you thought.

    data a;
非常有效,运行速度非常快,谢谢
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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