简体   繁体   English

在SAS中将多列转置为行

[英]Transpose multiple columns to rows in SAS

I am new to SAS and I want to transpose the following table in SAS 我是SAS的新手,我想在SAS中转置下表

From

ID  Var1    Var2    Jul-09  Aug-09  Sep-09      
1   10        15       200     300     
2    5        17      -150     200

to

ID  Var1    Var2    Date    Transpose  
1   10        15    Jul-09        200  
1   10        15    Aug-09        300  
2    5        17    Aug-09       -150  
2    5        17    Sep-09        200  

Can anyone help please? 有人可以帮忙吗?

data a;
input ID Var1 Var2 Jul_09 Aug_09;
CARDS;
1 10 15 200 300
2 5 17 -150 200
;

DATA b(drop=i jul_09 aug_09);
array dates_{*} jul_09 aug_09;
set a;
do i=1 to dim(dates_);
    this_value=dates_{i};
    this_date=input(compress(vname(dates_{i}),'_'),MONYY5.);
    output;
end;
format this_date monyy5.;
run;

You can use proc transpose to tranform data. 您可以使用proc transpose来转换数据。

options validvarname=any;

data a;
    infile datalines missover;
    input ID Var1 Var2 "Jul-09"n "Aug-09"n "Sep-09"n;
datalines;
1 10 15 200 300
2 5 17 -150 200
;
run;


proc transpose data=a out=b(rename=(_NAME_=Date COL1=Transpose));
    var "Jul-09"n--"Sep-09"n;
    by ID Var1-Var2;
run;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM