楼主: guanf1986
8019 2

[问答] 把一个横着的一行的表格变成竖着的表格 [推广有奖]

  • 0关注
  • 0粉丝

已卖:424份资源

硕士生

12%

还不是VIP/贵宾

-

威望
0
论坛币
471 个
通用积分
0.1200
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1611 点
帖子
108
精华
0
在线时间
128 小时
注册时间
2009-3-7
最后登录
2020-4-9

楼主
guanf1986 发表于 2011-3-12 22:31:39 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
本例中,b是横着的表格,说白了,就是Proc reg生成的唯一一个解的outset目标表格,这个表格的变量主要是回归模型中的各种变量,这个表格只有一行内容,就是对应模型变量的estimate。当然这个表格还有一些其他变量,比如我设置让他输出的_AIC_, _RSQ_, _ADJRSQ_等等。总之就是一行。

比如b表:
变量名  var1 var2 var3 var4
第一行   1.1   1.2   1.3   1.4

变成a表:
变量名  varname value
第一行   var1          1.1
第二行   var2          1.2
第三行   var3          1.3
第四行   var4          1.4


现在我要把它变成竖着的,程序如下。
  1. %macro test;
  2. proc contents data=b out=c;

  3. proc sql noprint;
  4.   select name
  5.   into :vlist separated by '  '
  6.   from c
  7.   where varnum>3
  8.   order by varnum;
  9. quit;

  10. data a(keep=varname value);
  11.   format varname $50.;
  12.   format value 15.12;
  13.   set  b  
  14.   %do x=1 %to 99;                                                  /*vlist变量装了b表中所有的变量名,以空格间隔*/
  15.    %let string=%scan(&vlist, &x);
  16.    %if %length(&string) ne 0 %then                          /* 搜索vlist串,每个单独的词都是一个变量名*/
  17.     %do;
  18.      varname='&string';                                    /* 问题出在这里了,为啥单引号里的&string他不自动解析成'var1' 'var2' 'var3'?而还是'&string2',我的新表格里所有的varname都是'&string2'*/
  19.      value=&string;
  20.      output;
  21.     %end;
  22.    %else %goto done;
  23.   %end;
  24. %done:run;
  25. %mend test;
复制代码
二维码

扫码加我 拉你入群

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

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

关键词:estimate contents separate proc sql Content 表格

讲究 但不将就!

沙发
guanf1986 发表于 2011-3-12 22:40:26
知道了,改用双引号,"&string"就可以了。。。。
讲究 但不将就!

藤椅
myc_sas 发表于 2011-3-15 19:21:14
不是有 proc transpose么

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

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