全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1200 3
2011-05-05
想请教各位前辈,目前小弟有一个程序不知该如何写,因想请教各位前辈,就是目前我有a b c d四个变量,而小弟我想增加e f这两个新的变量,a为日期,b为有无执行,c为价格,d为数量,而新增的变量ef也为价格和数量,但是因为会遇到不执行的状况与d的值为每天的累加值(想求出增加值),因而造成我在编程上的问题,在新增的ef变量中,e是没问题的,因为会和c相同,有问题的是f值,因为f值我想求的是增加值,而不是d的累加值,但因日期和空值的影响,造成我无法顺利完成f值的编程,想请各位前辈帮帮我,拜托各位了!!
a b c de f
20090910 122 5 225
20090910
1 22.5 7 22.5 2
20090910 0 . . . .
20090910 0 . . . .
20090910 0 . . . .
20090911 0 . . . .
20090911 0 . . . .
20090911 1 23 3 23 3
20090911 0 . . . .
20090911 1 22.5 7 22.5 4
20090911 0 . . . .
20090911 1 22.5 11 22.5 4
20090912 0 . . . .
20090912 0 . . . .
20090912 1 23 3 23 3

二维码

扫码加我 拉你入群

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

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

全部回复
2011-5-5 10:37:59
我SAS用不了,给你写 几句思路,你自己调一个,个人觉得,你的F 的具体形成规律没太说明白。
data have;     /*have是你原来只包含a,b,c,d,e,的数据集*/
set have;
retain f0  0;
if d is missing  then f=d;
else  if  d nt f0  then do;  f=d;f0=d;end;
         else  do; f=d-f0; f0=d; end;
run;
二维码

扫码加我 拉你入群

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

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

2011-5-5 17:40:21
data table_1;
input a b c$ d;
cards;
1 2 3 4
2 3 c .
3 4 r 4
4 2 t 7
5 3 y 13
6 3 u .
7 5 q 4
45 6 h 32
;
run;

data table_2;
retain last;
set table_1;
e=c;
if last ^=. then f=d-last;else f=d;
output;
last=d;
drop last;
run;
二维码

扫码加我 拉你入群

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

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

2011-5-5 22:57:28
2# zhaoping603
我把前辈的语法重新整理了一次,结果是可行的,谢谢!! 贴出来供大家参考!
data book1;

input a b c d ;


retain f0
0;

if d=.
then f=d;

else
if
d < f0
then do;
f=d;f0=d;end;


else
do; f=d-f0; f0=d; end;

cards ;
20090910 1 22 5 22 5
20090910 1 22.5 7 22.5 2
20090910 0 . . . .
20090910 0 . . . .
20090910 0 . . . .
20090911 0 . . . .
20090911 0 . . . .
20090911 1 23 3 23 3
20090911 0 . . . .
20090911 1 22.5 7 22.5 4
20090911 0 . . . .
20090911 1 22.5 11 22.5 4
20090912 0 . . . .
20090912 0 . . . .
20090912 1 23 3 23 3

run;
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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