Dear Friends,
I am trying to transform the existing data (Presently in this format):
| Name | 2013 | 2014 | 2015 | 2016 | 2017 | 2018 | 2019 | 2020 | 2021 |
| 3M India Ltd. | 11.12 | 10.95 | 10.7 | 10.62 | 10.38 | 10.25 | 10.2 | 11.03 | 10.66 |
| A B B India Ltd. | 7.93 | 7.93 | 7.8 | 7.99 | 7.8 | 7.99 | 7.96 | 8.32 | 7.97 |
| A C C Ltd. | 2.56 | 2.61 | 2.56 | 2.52 | 2.51 | 2.47 | 2.59 | 2.71 | 2.57 |
| A I A Engineering Ltd. | 5.33 | 5.05 | 4.82 | 4.82 | 4.67 | 4.75 | 4.68 | 4.71 | 4.85 |
| A P L Apollo Tubes Ltd. | 8.75 | 8.52 | 8.55 | 8.53 | 8.35 | 8.23 | 8.46 | 8.45 | 8.48 |
To Something like This:
| Name | Year | MTBV |
| 3M India Ltd. | 2013 | 11.12 |
| 3M India Ltd. | 2014 | 10.95 |
| 3M India Ltd. | 2015 | 10.7 |
| 3M India Ltd. | 2016 | 10.62 |
| 3M India Ltd. | 2017 | 10.38 |
| 3M India Ltd. | 2018 | 10.25 |
| 3M India Ltd. | 2019 | 10.2 |
| 3M India Ltd. | 2020 | 11.03 |
| 3M India Ltd. | 2021 | 10.66 |
| A B B India Ltd. | 2013 | 7.93 |
| A B B India Ltd. | 2014 | 7.93 |
| A B B India Ltd. | 2015 | 7.8 |
| A B B India Ltd. | 2016 | 7.99 |
| A B B India Ltd. | 2017 | 7.8 |
| A B B India Ltd. | 2018 | 7.99 |
| A B B India Ltd. | 2019 | 7.96 |
| A B B India Ltd. | 2020 | 8.32 |
| A B B India Ltd. | 2021 | 7.97 |
I am working on more than 500 stock data as of now. Can someone please suggest an easy and efficient way to do this?
Attaching a sample file for reference.
Thanks in Advance
Ritesh
Maybe like this:
options validvarname=v7;
proc import datafile="FakeData\TransposeNumNames.xlsx" dbms=xlsx replace out=have;
sheet= "have";
run;
proc transpose data=have out=transposed(drop=_name_ rename=(col1=mtbv)) label=year;
by Name;
var _:;
run;
I won't open any excel files, so i build one using the table you have posted.
You seem to have an Excel issue, you should ask this question in an Excel-centered support forum.
(Numbers are not valid variable names in SAS)
If you want to do this in SAS, provide a SAS dataset in usable form (data step with datalines).
In SAS, use PROC TRANSPOSE to transpose from wide to long, and a follow-up DATA step to convert _NAME_ to year.
Maybe like this:
options validvarname=v7;
proc import datafile="FakeData\TransposeNumNames.xlsx" dbms=xlsx replace out=have;
sheet= "have";
run;
proc transpose data=have out=transposed(drop=_name_ rename=(col1=mtbv)) label=year;
by Name;
var _:;
run;
I won't open any excel files, so i build one using the table you have posted.
proc transpose data=WD.BVTMV out=T_BVTMV(drop=_name_ rename=(col1=mtbv)) label=year;
by Company_Name;
var _all_;
run;
It worked.
Thanks a ton.
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and save with the early bird rate—just $795!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.