楼主: chenran313
1675 3

SAS 如何把一组时间观测修改成递增 [推广有奖]

  • 0关注
  • 0粉丝

初中生

52%

还不是VIP/贵宾

-

威望
0
论坛币
24060 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
57 点
帖子
10
精华
0
在线时间
22 小时
注册时间
2013-6-24
最后登录
2020-7-4

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
比如,
3688
3595
3932
3329
4128
4154
4086
4474
4476
4484
4518
4532
4540
4577
如果某一个观测比上一个小,那么把它取值为上一个*1.01,保证这一列数严格递增,程序如何实现,求教!
二维码

扫码加我 拉你入群

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

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

关键词:如何实现 如何

沙发
xiuzhenning 发表于 2014-10-20 22:21:17 |只看作者 |坛友微信交流群
如果不嫌弃我的方法笨的话,请参考。
data test_b;
    set test_a;
    flg = lag(item);*item为原数据集的变量名;
    if missing(flg) then item1 = item;*首行数据存储;
    else do;
        if flg < item then item1 = item*1.01;
    end;    *item1为结果;
run;


没调试过,LZ试下吧。

使用道具

藤椅
chenran313 发表于 2014-11-9 14:29:24 |只看作者 |坛友微信交流群
xiuzhenning 发表于 2014-10-20 22:21
如果不嫌弃我的方法笨的话,请参考。
data test_b;
    set test_a;
多谢赐教!已经解决,思路类似哈哈。。

使用道具

板凳
mingfeng07 学生认证  发表于 2014-11-9 19:35:46 |只看作者 |坛友微信交流群
上面那个方法好像达不到效果。
  1. data a;
  2. input x @@;
  3. cards;
  4. 1 3 2 8 5 0 4
  5. ;
  6. run;
  7. proc transpose data=a out=b(drop=_name_);
  8. var x;
  9. run;
  10. data c(drop=i);
  11. set b;
  12. array a{*} _all_;
  13. do i=2 to dim(a);
  14. if a(i)<a(i-1) then a(i)=a(i-1)*1.01;
  15. end;
  16. run;
  17. proc transpose data=c out=d(rename=(col1=x) drop=_name_);
  18. run;
复制代码

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-24 05:59