2016-11-13 66 views
0

我有原始数据集移调数据集

1

我要的是:

2

我的代码:

proc transpose data = lib.original 
     out= lib.new(rename=(col1=Mean col2=Median)); 
     var WBCmean RBCmean WBCmedian RBCmedian; 
     run; 

,但我得到

3

你能提供一些提示吗?

编辑

如果我添加by声明,

proc transpose data = lib.original 
     out= lib.new; 
     by Gender; 
     var WBCmean RBCmean WBCmedian RBCmedian; 
     run; 

然后我得到 4

+0

您遗漏了BY语句,将男性和女性记录作为单独的组处理。尝试一下,看看你能否接近。同时考虑使用两个TRANSPOSE步骤。 – Tom

+0

@Tom,我添加了'by'语句。 – Bigeyes

+0

您是否只有这4列?或者您是否需要动态的解决方案?一般而言,转置是很好的,因为它是动态的,但如果你需要一个定制的结果,通过一个数组进行'手动'转置也是很好的。 – Reeza

回答

0

一种方法是转换成一个高大骨感格式。

proc transpose data = have out=middle ; 
    by gender ; 
    var WBCmean RBCmean WBCmedian RBCmedian; 
run; 

然后再生成新的变量需要,

data middle; 
    set middle ; 
    testcode = substr(_name_,1,3); 
    _name_ = substr(_name_,4); 
run; 

你可能需要根据你的原来的VAR声明变量名的顺序对数据进行排序,

proc sort data=middle; 
    by gender testcode _name_; 
run; 

,然后转入新的安排。

proc transpose data=middle out=want ; 
    by gender testcode ; 
    id _name_; 
    var col1 ; 
run; 
+0

这仍然是不正确的。我把原始数据集放在[这里](https://onedrive.live.com/?id=3A8BB9EAEEFF1DB%214159&cid=03A8BB9EAEEFF1DB)。希望有人可以看看它。 – Bigeyes

+0

我测试了这个,它按预期工作。解释什么是不正确的。 – Reeza