全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1654 5
2014-04-16
一个大数据集 有3个变量 X1 X2 X3 大约几万条观测,一个小的数据集有三个变量 b1 b2 b3 ~有10条观测

目标:在大数据集增加变量F1 F2 F3.....F9F10 分别是 F1=b1*X1+b2*X2+B3*X3 (小数据集的第1条观测的b1 b2 b3)
F2= b1*X1+b2*X2+B3*X3 (第2条观测的bi b2 b3)以此类推,可以得到10个变量 F1-F10
接着 读大数据集的第二条观测,小数据集完成了10条观测的第一遍读取 依次得到大数据集所有的F值


我写了一个,但是 set 小数据集的时候 指针到第十条观测就停止了 只能读出来大数据集的 第一条观测的10个F值
data main;
set selected4;
array abc (10) f1-f10;
do i=1 to 10 ;
set zhangjf.main2;
abc(i)=X1*b1+x2*b2+x3*b3;
end;
run;
谁能帮我改改谢谢啦






二维码

扫码加我 拉你入群

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

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

全部回复
2014-4-16 15:42:20
data a;
set zhangjf.main2;
obs=_n_;
run;

proc sql;
create table b as
select *
from a,selected4;
quit;

data c;
set b;
array abc(10) f1-f10;
if obs ne lag(obs) then i+1;
abc(i)=x1*b1+x2*b2+x3*b3;
drop obs i;
run;
二维码

扫码加我 拉你入群

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

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

2014-4-16 16:27:57
谢谢,proc部是用了笛卡尔乘积,可是后面的data部提示数组下标越界了
二维码

扫码加我 拉你入群

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

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

2014-4-16 16:29:20
wwang111 发表于 2014-4-16 15:42
data a;
set zhangjf.main2;
obs=_n_;
谢谢,proc部是用了笛卡尔乘积,可是后面的data部提示数组下标越界了,不知道问题出在哪
我用了很笨的办法,把小数据纵向重复了大数据集的观测数。
二维码

扫码加我 拉你入群

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

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

2014-4-16 16:40:39
够dutch 发表于 2014-4-16 16:29
谢谢,proc部是用了笛卡尔乘积,可是后面的data部提示数组下标越界了,不知道问题出在哪
我用了很笨的 ...
可能是数据集标反了,反过来试一下

data a;
set selected4;
obs=_n_;
run;

proc sql;
create table b as
select *
from a,main2;
quit;
二维码

扫码加我 拉你入群

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

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

2014-4-16 17:29:22
wwang111 发表于 2014-4-16 16:40
可能是数据集标反了,反过来试一下

data a;
还是下标越界~
我是想要在大数据集的右边F1-F10的数据~刚才的data部使原数据集扩大了10倍的观测数,且每条只对应1个F值
是不是回溯的函数lag的问题,请问,这句if obs ne lag(obs )then i+1背后的逻辑是什么 谢谢
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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