全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
5918 9
2008-04-28

我有一张表格,是一个序列表,表格中包含100多只股票1年的收盘数据序列,现在想把这个表格分拆成100多张表,就是一只股票一张表,表名以

code_代码 表示,如000001的数据表名为code_000001。请问怎么编程?

表格结构大概如下:

var  label type

code 代码 $8

name 股票名 $10

date 日期 yyyymmdd10.

close_pr 收盘价 双精度 4.2

我试了好多结构,最主要是自动输出的表格命名,应该要涉及宏来自动给表格命名,但是我编的程序宏不对。请高手帮忙。

二维码

扫码加我 拉你入群

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

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

全部回复
2008-4-28 18:11:00
需要高手
二维码

扫码加我 拉你入群

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

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

2008-4-28 19:18:00

data a;
 input a$ b code$;
 datalines;
a 10000 000001
b 2600 000001
c 670 000001
t2a 70 000001
t2b 6 000001
t2c 400 000001
a 690 000002
b 110 000002
c 2500 000002
t2a 450 000002
t2b 160 000002
t2c 8 000002
q   8  000003
q   8  000003
q   8  000003
q   8  000003
;
run;
proc sort data=a out=a;
 by code;
run;
data _null_;
 set a end=last;
 by code;
 retain s 0;
 if first.code=1 then  s+1;
 if last then call symput('nobs',s);
run;
%put _user_;
options mprint mlogic=1 symbolgen=1;
%macro mm;
 data _null_;
  %local tem;
  do i=1 to &nobs;
   do until(last);
    set a end=last;
    by code;
    if first.code  then call symput('var'||compress(i),code);
    if last.code=1 then leave;
   end;
  end;
 run;
 %do i=1 %to &nobs;
  %let tem=&tem code_&&var&i;
 %end;
 data &tem;
  %do i=1 %to &nobs;
   do until(last&i);
    set a end=last&i;
    if code="&&var&i" then output code_&&var&i;
   end;
  %end;
 run;
 %put _user_;
%mend mm;

%mm

[此贴子已经被作者于2008-4-28 20:38:42编辑过]

二维码

扫码加我 拉你入群

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

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

2008-4-28 21:10:00
楼上强人,但是还是有点看不懂,慢慢研究,先谢了.
二维码

扫码加我 拉你入群

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

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

2008-4-29 08:18:00

data a;
 input a$ b code$;
 datalines;
a 10000 000001
b 2600 000001
c 670 000001
t2a 70 000001
t2b 6 000001
t2c 400 000001
a 690 000002
b 110 000002
c 2500 000002
t2a 450 000002
t2b 160 000002
t2c 8 000002
q   8  000003
q   8  000003
q   8  000003
q   8  000003
;
run;


proc sql noprint;
 select count(distinct code) into: count from a ;
 select distinct code into :code separated by " " from a group by code;
quit;

%macro table();
%do i = 1 %to &count;
 %let tempcode = %scan(&code,&i," ");
 proc sql;
 create table code_&tempcode as select * from a where code = "&tempcode";
quit;
%end;
%mend;

%table();

二维码

扫码加我 拉你入群

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

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

2008-4-29 14:41:00

多谢楼上的,sql居然也能建宏,太强了。

我也一向比较喜欢用sql,写出来的程序比较简练,可惜学的不够。

以后希望能与大家多交流。

二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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