楼主: 够dutch
1683 5

求指点2 [推广有奖]

  • 5关注
  • 0粉丝

本科生

62%

还不是VIP/贵宾

-

威望
0
论坛币
277 个
通用积分
1.3000
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1451 点
帖子
11
精华
0
在线时间
194 小时
注册时间
2013-10-7
最后登录
2025-8-21

楼主
够dutch 发表于 2014-4-16 14:53:50 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
一个大数据集 有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;
谁能帮我改改谢谢啦






二维码

扫码加我 拉你入群

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

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

关键词:求指点 Selected Select Elect array

沙发
wwang111 发表于 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;
只有一个罗纳尔多

藤椅
够dutch 发表于 2014-4-16 16:27:57
谢谢,proc部是用了笛卡尔乘积,可是后面的data部提示数组下标越界了

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

报纸
wwang111 发表于 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;
只有一个罗纳尔多

地板
够dutch 发表于 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背后的逻辑是什么 谢谢

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-6 05:53