SAS中文论坛

标题: 菜鸟请教transpose问题 [打印本页]

作者: shiyiming    时间: 2008-7-8 12:16
标题: 菜鸟请教transpose问题
通过transpose可以将行列转换,不过不知道为什么,本人转换后里面的某些不见了,请高手赐教:
例如:
c:\test\qq.sas7bdat中的内容为:
a      b     c     d
11   12   13   14
21   22   23   24
31   32   33   34
但转置后内容却为:
Name  
b   12    22    32
d   14    24    34

执行语句为:
libname da "c:\test";
data ex;
set da.qq;
proc transpose;
proc print;run;
作者: shiyiming    时间: 2008-7-8 13:05
标题: Re: 菜鸟请教transpose问题
data qq;
input a b c d;
cards;
11 12 13 14
21 22 23 24
31 32 33 34
;
run;
data ex;
set work.qq;
run;
proc transpose data=ex
  out=ex2;
var a b c d;
run;
标点符号分号应该是英文格式下的分号。
作者: shiyiming    时间: 2008-7-8 13:57
标题: Re: 菜鸟请教transpose问题
xgghxkhuang,谢谢您的指教。不过您说的这种我试过了,对于自己创建的data,那么在执行转置的时候是成功的,但现在的问题是我读取的是存在的data,所以每次都不行。是不是那个dataset中有什么限制呢?希望有高手再给予指点
作者: shiyiming    时间: 2008-7-8 14:23
标题: Re: 菜鸟请教transpose问题
libname da "C:\test";
data ex;
set da.qq;
run;
proc print data=ex;
run;
proc transpose data=ex out=ex2;
var _all_;
run;
proc print data=ex2;
run;
试一下,复制黏贴运行。先看一下读到work里面的数据集合对不对,再看一下转置后的少没少。
如果不行,有可能是你的数据和你的sas型号不匹配,一般高版本的可以读取低的版本的,但是低的版本的无法读取高版本的。
你可以尝试双击这个集合,它会出现一个视图,里面是数据。然后他的libname因该是tmp等的,然后你再对tmp里面的那个集合转置就可以了。上面的代码先运行一下,试一下。
作者: shiyiming    时间: 2008-7-8 14:33
标题: Re: 菜鸟请教transpose问题
感谢xgghxkhuang 的指导,转置的时候添加了
proc transpose data=ex out=ex2;
var _all_;   //添加部分
run;
这样就ok了。这还真奇怪,呵呵
作者: shiyiming    时间: 2008-7-8 17:25
标题: Re: 菜鸟请教transpose问题
transpose转职变量你没指定,所以结果不是你想得那样。




欢迎光临 SAS中文论坛 (https://mysas.net/forum/) Powered by Discuz! X3.2