全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
10289 10
2007-10-30

如:

NoX
16360
26362
36380
46387
56401
66402
76354
86372
96400
106360

现在要求变量y,y1=x1,y2=x1+x2,y3=x1+x2+x3,依次类推,怎么完成呢?

各位大侠帮帮忙吧!

二维码

扫码加我 拉你入群

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

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

全部回复
2007-10-31 02:33:00

刚试了下,lag+retain,用 a=lag(a) 是行不通的

因为lag(x)指定是上一阶段的原始值。。。

另写如下

data aa ;
 input No X ;
 datalines ;
1 6360
2 6362
3 6380
4 6387
5 6401
6 6402
7 6354
8 6372
9 6400
10 6360
;
run ;
data ab ;
 set aa ;
 array arr(9) ;
 arr(1)=lag(x) ;
 do i = 2 to 9 ;
  arr(i)=lag(arr(i-1)) ;
 end ;
 sum=0 ;
 do i = 1 to 9 ;
  if arr(i)=. then arr(i)=0 ;
  sum=sum + arr(i) ;
 end ;
 keep no x sum ;
run ;


现在答问还加分么?

ps: 现在放书的人都红眼了,动辄就要好几十现金。。之前刚花了一大笔钱(真钞!)买的书,结果跟着就在论坛上找到pdf的了,考

[此贴子已经被作者于2007-10-31 2:44:20编辑过]

二维码

扫码加我 拉你入群

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

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

2007-10-31 09:24:00

滞后了一个,出现y1=0 y2=x1 y3=x1+x2;但不是大问题。但我要运算的数据量很大,这样循环恐怕很慢才算出来。

不过不知道有没有更简单的,sas这方面的功能这么差?用excel采用一个绝对引用,一下就算出来。就是太麻烦又得导出来。

二维码

扫码加我 拉你入群

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

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

2007-10-31 10:02:00

的确是很消耗资源,10w行的话,就要运行100w次赋值,加上100w次相加,(我猜的,呵呵)

我很想知道如果10w行楼主的电脑多久可以运行结束,(我想应该不会太久吧)我也期待更好的算法!

ps: 绝对引用是什么意思?(框住cells往下拉?),但是如果是指vba的话,我不认为10w行的情况下可以比sas快多少。(就假设完全脱离cells,excel在vba环境下可以容纳超过65532行)。。楼上勾起了我以前用那玩意儿的噩梦。。。

[此贴子已经被作者于2007-10-31 10:06:45编辑过]

二维码

扫码加我 拉你入群

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

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

2007-10-31 13:51:00

是下拉excel;只要使用sum函数的时候,在里面行或列前面$加个符号就可以了,然后下拉。

10w肯定运行不了,等于运行10W的10w次。

[此贴子已经被作者于2007-10-31 13:56:35编辑过]

二维码

扫码加我 拉你入群

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

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

2007-10-31 16:14:00
其实是你把问题说的复杂啦,你要求的简单来说就是
y1=0
y2=x1+y1
y3=x2+y2
.....
data aa;
set aa;
z=lag(x);
if No=1 then y=0;
               else y+z;
drop z;
run;


ps:我对你工作挺好奇的,跟我做的好像,^_^。
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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