作者tew (咖啡王子)
站内Statistics
标题Re: [问题] SAS资料处理问题
时间Sun Apr 5 17:35:05 2009
data test;
input a b;
cards;
2 3
5 2
3 9
8 2
;
data a;
set test;
retain c 0;
if _n_>=2 then c=a+b+c;
run;
这样就好了
XD
※ 引述《YcSJM (挖喜SJM)》之铭言:
: ※ 引述《YcSJM (挖喜SJM)》之铭言:
: : 想请教一个SAS资料处理的问题
: : 如果现在资料是这样
: : a b c
: : ----------
: : 2 3 0
: : 5 2 .
: : 3 9 .
: : 8 2 .
: : c 从第二个开始想要是 a的第2个 + b的第2个 + c的第1个
: : c 的第三个类推下去是 a的第3个 + b的第3个 + c的第2个
: : 这样程式改怎麽写
: : 推 kenshin528:我觉得用IML或EXCEL做比较简单 04/01 15:45
: : 推 wlsherica:excel+1 04/01 17:12
: : 推 tew:retain c 0; if _n_>=2 then c=a+b+c; 结束 04/01 17:31
: : 推 tew:如果资料笔数是100000笔 SAS还是比较简单一点 XD 04/01 18:32
: : 推 wlsherica:请问_n_是甚麽呢??????? 04/01 21:50
: 感谢版主及版友的回答
: 因为资料有上千笔 而同样的动作要重复好几百次
: 上面的问题只是将问题简单化而已
: 所以不考虑用excel做
: 试了版主的方法试了好几次都没办法成功
: 後来改用iml处理
: 将处理的方法提供给以後有需要的版友参考看看
: 只是iml不是很熟
: 也许会有些多余或者没效率
: data test;
: input a b;
: cards;
: 2 3
: 5 2
: 3 9
: 8 2
: ;
: proc iml ;
: use test;
: read all var {a} into a; read all var {b} into b;
: n=nrow(a);
: c=j(n,1,0);
: do j=2 to n;
: c[j,1]=a[j,1]+b[j,1]+c[j-1,1];
: end;
: create test1 var{a b c};
: append;
: quit;
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 125.225.32.225
1F:推 west1996:这样子每读一笔data就会重新assign c=0喔 code顺序要换 04/05 20:34
2F:→ west1996:一下 04/05 20:35
3F:→ tew:retain 的意思应该不是你说的这样吧 04/05 23:59
4F:→ tew:retain c 0只是将C变项设起始值为0 保留给下一个观察值用 04/06 00:00
5F:→ tew:不会每次都设0 04/06 00:00
6F:→ tew:或者是 长期以来 我误解这个语法 OTL 04/06 00:16
7F:→ west1996:恩 刚刚试了一下 是我误解了XD 04/06 10:42