楼主: lbnjin
1101 2

[原创博文] 请教:如何将data步中若干个变量的值导出成一个table? [推广有奖]

  • 0关注
  • 0粉丝

硕士生

53%

还不是VIP/贵宾

-

威望
0
论坛币
1057 个
通用积分
1.5000
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1173 点
帖子
85
精华
0
在线时间
226 小时
注册时间
2005-7-31
最后登录
2025-5-13

楼主
lbnjin 发表于 2012-7-10 23:26:39 |AI写论文
3论坛币
大家好,我这里有个问题想请教一下...

我有一个程序:
%let a = 3;
%let b = 4;

data work.A1;
        array arrayA_(&b);
        do j1=1 to &b;
                arrayA
_(j1) = &a+j1;
        end;
run;

以上程序运行之后,生成一个work.A1数据集:
arrrayA_1  arrrayA_2  arrrayA_3  arrrayA_4 j1
4  5  6  7  5

现在需要将work.A1里面的arrrayA_1, arrrayA_2,  arrrayA_3, arrrayA_4提取出来,重新生成一个work.B1数据集:
arrrayA_1  arrrayA_2  arrrayA_3  arrrayA_4
4  5  6  7

我写了如下代码:
%let a = 3;
%let b = 4;

data work.A1;
        array arrayA_(&b);
        do j1=1 to &b;
                arrayA
_(j1) = &a+j1;
        end;
run;
proc sql;
  create table work.B1 as
  select array_A&b as array_B&b
  from work.A1;
run;

结果生成的work.B1数据集为
arrrayB_4
7
这倒没有什么意外,因为这时&b=4...

我的问题是: 在array_A和array_B的列数都不确定(像以上代码一样由宏变量确定)的情况下,要使work.B1数据集为:
arrrayB_1  arrrayB_2  arrrayB_3  arrrayB_4 ... arrayB_&b
4  5  6  7 ...

代码该怎么写呢?

(该用ods, output, 还是sql create...? 貌似sql create语句不能在中间截断插入do循环..).

谢谢!

最佳答案

sailingyf 查看完整内容

难道不是 data b1; set a1; keep arrrayA_1 - arrrayA_&b.; run;
关键词:data步 Table Data ABLE ABL 如何 程序

沙发
sailingyf 发表于 2012-7-10 23:26:40
难道不是
data b1;
set a1;
keep arrrayA_1 - arrrayA_&b.;
run;

藤椅
lbnjin 发表于 2012-7-11 10:40:25
恩,有道理,谢谢~
我是初学者...呵呵

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

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