楼主: aaronboom
5942 9

[求助]SAS高手进来,一个表格分拆问题 [推广有奖]

  • 0关注
  • 0粉丝

已卖:145份资源

高中生

95%

还不是VIP/贵宾

-

威望
0
论坛币
28264 个
通用积分
6.4038
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
508 点
帖子
33
精华
0
在线时间
35 小时
注册时间
2005-10-1
最后登录
2019-12-9

楼主
aaronboom 发表于 2008-4-28 16:11:00 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

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

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

表格结构大概如下:

var  label type

code 代码 $8

name 股票名 $10

date 日期 yyyymmdd10.

close_pr 收盘价 双精度 4.2

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

二维码

扫码加我 拉你入群

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

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

关键词:label Close code Abel Lose 求助 高手 SAS 表格 分拆

回帖推荐

mingfeng07 发表于10楼  查看完整内容

olover 发表于5楼  查看完整内容

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  000003q   8  000003q   8  000003q   8  000003;run;proc sql noprint; select count(distinct code) into: count from a ...

lwien007 发表于3楼  查看完整内容

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  000003q   8  000003q   8  000003q   8  000003;run;proc sort data=a out=a; by code;run;data _null_; set a end=l ...

本帖被以下文库推荐

沙发
cy-0477 发表于 2008-4-28 18:11:00
需要高手

藤椅
lwien007 发表于 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编辑过]

已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 10 精彩帖子

总评分: 经验 + 3  论坛币 + 10   查看全部评分

板凳
aaronboom 发表于 2008-4-28 21:10:00
楼上强人,但是还是有点看不懂,慢慢研究,先谢了.

报纸
olover 发表于 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();

已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 10 精彩帖子

总评分: 经验 + 3  论坛币 + 10   查看全部评分

地板
aaronboom 发表于 2008-4-29 14:41:00

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

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

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

7
xiesf3562 发表于 2008-4-29 20:50:00

学习

8
Angela1122 发表于 2014-5-14 17:10:05
我怎么觉得sql运行出来是有错的~~~~input也需要对 a b code进行格式约定~

9
Angela1122 发表于 2014-5-14 17:10:06
我怎么觉得sql运行出来是有错的~~~~input也需要对 a b code进行格式约定~

10
mingfeng07 学生认证  发表于 2014-5-16 11:14:52
Angela1122 发表于 2014-5-14 17:10
我怎么觉得sql运行出来是有错的~~~~input也需要对 a b code进行格式约定~
  1. %macro test;
  2. proc sql;
  3. select count(distinct code) into:sum from a;
  4. select distinct code into:a1-:a%trim(%left(&sum)) from a;
  5. quit;
  6. %do i=1 %to ∑
  7. data code_&&a&i.;
  8. set a;
  9. if code=&&a&i.;
  10. run;
  11. %end;
  12. %mend;
复制代码
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 10 精彩帖子

总评分: 经验 + 3  论坛币 + 10   查看全部评分

欢迎扫一扫我头像关注, 不定期分享SAS技术知识。

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-5 15:56