全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1714 2
2012-12-08
悬赏 10 个论坛币 已解决
数据有如下三个变量 a b c, 数据格式如下
a  b  c
1  1  0.3
1  2  0.4
1  3  0.6
1  4  0.8
2  1  0.2
2  2  0.9
2  3  0.5
2  4  0.6
3  1  0.5
3  2  0.6
3  3  0.1
3  4  0.5
...
b 是一直重复1 2 3 4 , a从1 到200, c 是要比较的数。
我想创建新的变量 d,如果b=1, d=c, 如果b=2,3,4, d=c的当前值减去前一个数值
最后结果应该是
a   b   c  d
1  1  0.3  0.3
1  2  0.4  0.1
1  3  0.6  0.2
1  4  0.8  0.2
2  1  0.2 0.2
2  2  0.9  0.7
2  3  0.5 -0.4
2  4  0.6 0.1
3  1  0.5  0.5
3  2  0.6  0.1
3  3  0.1  -0.5
3  4  0.5 0.4
...
怎么用SAS实现这个功能呢?
请高手帮忙! 谢谢!

最佳答案

Milliaamy 查看完整内容

data one; input a b c; datalines; 1 1 0.3 1 2 0.4 1 3 0.6 1 4 0.8 2 1 0.2 2 2 0.9 2 3 0.5 2 4 0.6 3 1 0.5 3 2 0.6 3 3 0.1 3 4 0.5 run; data two; set one; d=c-lag(c); if b=1 then d=c; run;
二维码

扫码加我 拉你入群

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

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

全部回复
2012-12-8 03:45:16
data one;
        input a b c;
        datalines;
1  1  0.3
1  2  0.4
1  3  0.6
1  4  0.8
2  1  0.2
2  2  0.9
2  3  0.5
2  4  0.6
3  1  0.5
3  2  0.6
3  3  0.1
3  4  0.5
run;

data two; set one;
        d=c-lag(c);
        if b=1 then d=c;
run;
二维码

扫码加我 拉你入群

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

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

2012-12-11 14:58:00
there 'd=c-lag(c)' is the same as' d=dif(c)';
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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