楼主: 薇拉就薇
1363 1

[问答] 如何同时生成多个表 [推广有奖]

  • 2关注
  • 0粉丝

高中生

42%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
2 点
信用等级
2 点
经验
337 点
帖子
15
精华
0
在线时间
29 小时
注册时间
2010-4-22
最后登录
2017-10-24

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
有一个数据集是这样的,变量x有很多取值,我要把不同取值的放在不同的表中。
因为变量a的取值很多,我想用宏的话应该会方便很多吧,求大神指导一下。
比如说数据集是这样的:
x y
a 1
a 2
b 1
b 2
.....


二维码

扫码加我 拉你入群

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

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

关键词:数据集 如何

沙发
beijingdizheng 发表于 2013-10-8 19:59:23 |只看作者 |坛友微信交流群
以下面这个数据集为例,把不同的class分开,可以参照下面的方法
data have;
input height weight class $ gender $ id;
cards;
156 51 Amber M 1
156 52 Amber M 2
156 52 Amber F 3
167 54 Denise F 4
167 55 Denise M 5
145 56 Ginny M 6
145 57 Ginny F 7
145 58 Ginny F 8
134 59 Lynn M 9
134 60 Lynn F 10
134 61 Lynn M 11
178 62 Rick F 12
178 63 Rick M 13
178 64 Rick F 14
156 51 Amber M 1
156 52 Amber M 2
156 52 Amber F 3
167 54 Denise F 4
167 55 Denise M 5
145 56 Ginny M 6
145 57 Ginny F 7
145 58 Ginny F 8
134 59 Lynn M 9
134 60 Lynn F 10
134 61 Lynn M 11
178 62 Rick F 12
178 63 Rick M 13
178 64 Rick F 14
156 51 Amber M 1
156 52 Amber M 2
156 52 Amber F 3
167 54 Denise F 4
167 55 Denise M 5
145 56 Ginny M 6
145 57 Ginny F 7
145 58 Ginny F 8
134 59 Lynn M 9
134 60 Lynn F 10
134 61 Lynn M 11
178 62 Rick F 12
178 63 Rick M 13
178 64 Rick F 14
156 51 Amber M 1
156 52 Amber M 2
156 52 Amber F 3
167 54 Denise F 4
167 55 Denise M 5
145 56 Ginny M 6
145 57 Ginny F 7
145 58 Ginny F 8
134 59 Lynn M 9
134 60 Lynn F 10
134 61 Lynn M 11
178 62 Rick F 12
178 63 Rick M 13
178 64 Rick F 14
156 51 Amber M 1
156 52 Amber M 2
156 52 Amber F 3
167 54 Denise F 4
167 55 Denise M 5
145 56 Ginny M 6
145 57 Ginny F 7
145 58 Ginny F 8
134 59 Lynn M 9
134 60 Lynn F 10
134 61 Lynn M 11
178 62 Rick F 12
178 63 Rick M 13
178 64 Rick F 14
;
run;
*方法一;
proc sql noprint;
select count(distinct class) into:count from have;
select distinct class into :a separated by ',' from have;
quit;

%macro kk;
%do i=1 %to &count;
data data_&i;

a=scan("&a",&i);
set have;
if class=a;
drop a;run;
%end;

%mend;
%kk
*方法二;
proc sql noprint;
create table want as
select distinct class   from have;
quit;

data _null_;
set want;
call execute('data data_'||strip(class)||';');
call execute('set have;if class="'||strip(class)||'";run;');
run;
已有 3 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
webgu + 100 + 100 + 3 + 3 + 3 call execute 是个好方法。
Imasasor + 100 + 100 + 5 + 4 热心帮助其他会员
薇拉就薇 + 1 + 1 + 1 观点有启发

总评分: 经验 + 200  论坛币 + 200  学术水平 + 9  热心指数 + 4  信用等级 + 8   查看全部评分

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-28 21:08