Wednesday, 7 January 2026

363.MUSICAL INSTRUMENTS DATA ANALYSIS USING SAS DATA STEP | PROC SQL | MEANS | REG | SGPLOT | MACROS | DATE FUNCTIONS | APPEND | MERGE | SET | TRANSPOSE

MUSICAL INSTRUMENTS DATA ANALYSIS USING SAS DATA STEP | PROC SQL | MEANS | REG | SGPLOT | MACROS | DATE FUNCTIONS | APPEND | MERGE | SET | TRANSPOSE 

 options nocenter;

1.CREATING INSTRUMENTS RAW DATASET

data instruments_raw;

    length Instrument_Name $20 Origin_Country $20;

    format Launch_Date date9.;

    input Instrument_Name $ Origin_Country $ Sound_Level Complexity Popularity 

          Launch_Date :date9.;

    datalines;

Guitar USA 85 6 90 01JAN2010

Violin Italy 78 8 88 15FEB2008

Flute India 65 5 70 10MAR2012

Drums USA 95 7 85 20APR2015

Piano Germany 80 9 92 05MAY2005

Sitar India 75 8 76 12JUN2009

Trumpet France 88 6 74 30JUL2011

Saxophone USA 90 7 80 18AUG2013

Tabla India 70 7 78 25SEP2014

Harp Ireland 68 9 60 02OCT2007

Cello Germany 72 8 66 19NOV2006

Ukulele Hawaii 60 4 82 10DEC2016

Harmonium India 73 6 71 05JAN2018

;

run;

proc print data=instruments_raw;

run;

OUTPUT:

ObsInstrument_NameOrigin_CountryLaunch_DateSound_LevelComplexityPopularity
1GuitarUSA01JAN201085690
2ViolinItaly15FEB200878888
3FluteIndia10MAR201265570
4DrumsUSA20APR201595785
5PianoGermany05MAY200580992
6SitarIndia12JUN200975876
7TrumpetFrance30JUL201188674
8SaxophoneUSA18AUG201390780
9TablaIndia25SEP201470778
10HarpIreland02OCT200768960
11CelloGermany19NOV200672866
12UkuleleHawaii10DEC201660482
13HarmoniumIndia05JAN201873671


2.DATE DERIVATIONS – MDY, INTNX, INTCK

data instruments_dates;

    set instruments_raw;

    Year_Introduced = year(Launch_Date);

    Review_Date = intnx('year', Launch_Date, 1, 'same');

    Years_Since_Launch = intck('year', Launch_Date, today());

    Custom_Date = mdy(12,31,Year_Introduced);

    format Review_Date Custom_Date date9.;

run;

proc print data=instruments_dates;

run;

OUTPUT:

ObsInstrument_NameOrigin_CountryLaunch_DateSound_LevelComplexityPopularityYear_IntroducedReview_DateYears_Since_LaunchCustom_Date
1GuitarUSA01JAN201085690201001JAN20111631DEC2010
2ViolinItaly15FEB200878888200815FEB20091831DEC2008
3FluteIndia10MAR201265570201210MAR20131431DEC2012
4DrumsUSA20APR201595785201520APR20161131DEC2015
5PianoGermany05MAY200580992200505MAY20062131DEC2005
6SitarIndia12JUN200975876200912JUN20101731DEC2009
7TrumpetFrance30JUL201188674201130JUL20121531DEC2011
8SaxophoneUSA18AUG201390780201318AUG20141331DEC2013
9TablaIndia25SEP201470778201425SEP20151231DEC2014
10HarpIreland02OCT200768960200702OCT20081931DEC2007
11CelloGermany19NOV200672866200619NOV20072031DEC2006
12UkuleleHawaii10DEC201660482201610DEC20171031DEC2016
13HarmoniumIndia05JAN201873671201805JAN2019831DEC2018


3.PROC SQL – DATA EXTRACTION & DERIVATION

proc sql;

    create table instruments_sql as

    select Instrument_Name,Origin_Country,Sound_Level,Complexity,Popularity,

           (Sound_Level * Complexity) as Impact_Score,Launch_Date

    from instruments_dates

    where Popularity > 70;

quit;

proc print data=instruments_sql;

run;

OUTPUT:

ObsInstrument_NameOrigin_CountrySound_LevelComplexityPopularityImpact_ScoreLaunch_Date
1GuitarUSA8569051001JAN2010
2ViolinItaly7888862415FEB2008
3DrumsUSA9578566520APR2015
4PianoGermany8099272005MAY2005
5SitarIndia7587660012JUN2009
6TrumpetFrance8867452830JUL2011
7SaxophoneUSA9078063018AUG2013
8TablaIndia7077849025SEP2014
9UkuleleHawaii6048224010DEC2016
10HarmoniumIndia7367143805JAN2018


4.MACRO – INSTRUMENT POPULARITY RATING

%macro popularity_rating(input_ds, output_ds);

    data &output_ds;

        set &input_ds;

        length Popularity_Rating $12;

        if Popularity >= 85 then Popularity_Rating = "HIGH";

        else if Popularity >= 70 then Popularity_Rating = "MEDIUM";

        else Popularity_Rating = "LOW";

    run;

    proc print data=&output_ds;

    run;

%mend;


%popularity_rating(instruments_sql, instruments_rated);

OUTPUT:

ObsInstrument_NameOrigin_CountrySound_LevelComplexityPopularityImpact_ScoreLaunch_DatePopularity_Rating
1GuitarUSA8569051001JAN2010HIGH
2ViolinItaly7888862415FEB2008HIGH
3DrumsUSA9578566520APR2015HIGH
4PianoGermany8099272005MAY2005HIGH
5SitarIndia7587660012JUN2009MEDIUM
6TrumpetFrance8867452830JUL2011MEDIUM
7SaxophoneUSA9078063018AUG2013MEDIUM
8TablaIndia7077849025SEP2014MEDIUM
9UkuleleHawaii6048224010DEC2016MEDIUM
10HarmoniumIndia7367143805JAN2018MEDIUM


5.PROC MEANS – DESCRIPTIVE STATISTICS

proc means data=instruments_rated n mean min max;

    var Sound_Level Complexity Popularity Impact_Score;

run;

OUTPUT:

The MEANS Procedure

VariableNMeanMinimumMaximum
Sound_Level
Complexity
Popularity
Impact_Score
10
10
10
10
79.4000000
6.8000000
81.6000000
544.5000000
60.0000000
4.0000000
71.0000000
240.0000000
95.0000000
9.0000000
92.0000000
720.0000000

6.PROC REG – REGRESSION ANALYSIS

proc reg data=instruments_rated;

    model Popularity = Sound_Level Complexity;

run;

quit;

OUTPUT:

The REG Procedure

Model: MODEL1

Dependent Variable: Popularity

Number of Observations Read10
Number of Observations Used10
Analysis of Variance
SourceDFSum of
Squares
Mean
Square
F ValuePr > F
Model255.3020427.651020.490.6308
Error7393.0979656.15685  
Corrected Total9448.40000   
Root MSE7.49379R-Square0.1233
Dependent Mean81.60000Adj R-Sq-0.1271
Coeff Var9.18356  
Parameter Estimates
VariableDFParameter
Estimate
Standard
Error
t ValuePr > |t|
Intercept166.0266319.978503.300.0130
Sound_Level10.063290.254180.250.8105
Complexity11.551221.904790.810.4422

The REG Procedure

Model: MODEL1

Dependent Variable: Popularity

Panel of fit diagnostics for Popularity.
Panel of scatterplots of residuals by regressors for Popularity.

7.PROC SGPLOT – VISUALIZATION

proc sgplot data=instruments_rated;

    scatter x=Sound_Level y=Popularity;

    reg x=Sound_Level y=Popularity;

    title "Popularity vs Sound Level of Musical Instruments";

run;

OUTPUT:

The SGPlot Procedure


8.SET STATEMENT – COMBINING DATASETS

data instruments_combined;

    set instruments_raw 

        instruments_rated;

run;

proc print data=instruments_combined;

run;

OUTPUT:

ObsInstrument_NameOrigin_CountryLaunch_DateSound_LevelComplexityPopularityImpact_ScorePopularity_Rating
1GuitarUSA01JAN201085690. 
2ViolinItaly15FEB200878888. 
3FluteIndia10MAR201265570. 
4DrumsUSA20APR201595785. 
5PianoGermany05MAY200580992. 
6SitarIndia12JUN200975876. 
7TrumpetFrance30JUL201188674. 
8SaxophoneUSA18AUG201390780. 
9TablaIndia25SEP201470778. 
10HarpIreland02OCT200768960. 
11CelloGermany19NOV200672866. 
12UkuleleHawaii10DEC201660482. 
13HarmoniumIndia05JAN201873671. 
14GuitarUSA01JAN201085690510HIGH
15ViolinItaly15FEB200878888624HIGH
16DrumsUSA20APR201595785665HIGH
17PianoGermany05MAY200580992720HIGH
18SitarIndia12JUN200975876600MEDIUM
19TrumpetFrance30JUL201188674528MEDIUM
20SaxophoneUSA18AUG201390780630MEDIUM
21TablaIndia25SEP201470778490MEDIUM
22UkuleleHawaii10DEC201660482240MEDIUM
23HarmoniumIndia05JAN201873671438MEDIUM


9.APPEND – ADDING NEW OBSERVATIONS

data new_instruments;

    length Instrument_Name $20 Origin_Country $20;

    format Launch_Date date9.;

    Instrument_Name = "Banjo";

    Origin_Country = "USA";

    Sound_Level = 82;

    Complexity = 6;

    Popularity = 65;

    Launch_Date = '15FEB2020'd;

run;

proc print data=new_instruments;

run;

OUTPUT:

ObsInstrument_NameOrigin_CountryLaunch_DateSound_LevelComplexityPopularity
1BanjoUSA15FEB202082665

proc append base=instruments_raw 

            data=new_instruments force;

run;

proc print data=instruments_raw;

run;

OUTPUT:

ObsInstrument_NameOrigin_CountryLaunch_DateSound_LevelComplexityPopularity
1GuitarUSA01JAN201085690
2ViolinItaly15FEB200878888
3FluteIndia10MAR201265570
4DrumsUSA20APR201595785
5PianoGermany05MAY200580992
6SitarIndia12JUN200975876
7TrumpetFrance30JUL201188674
8SaxophoneUSA18AUG201390780
9TablaIndia25SEP201470778
10HarpIreland02OCT200768960
11CelloGermany19NOV200672866
12UkuleleHawaii10DEC201660482
13HarmoniumIndia05JAN201873671
14BanjoUSA15FEB202082665


10.MERGE – JOINING BY KEY VARIABLE

proc sort data=instruments_raw; by Instrument_Name; run;

proc print data=instruments_raw;

run;

OUTPUT:

ObsInstrument_NameOrigin_CountryLaunch_DateSound_LevelComplexityPopularity
1BanjoUSA15FEB202082665
2CelloGermany19NOV200672866
3DrumsUSA20APR201595785
4FluteIndia10MAR201265570
5GuitarUSA01JAN201085690
6HarmoniumIndia05JAN201873671
7HarpIreland02OCT200768960
8PianoGermany05MAY200580992
9SaxophoneUSA18AUG201390780
10SitarIndia12JUN200975876
11TablaIndia25SEP201470778
12TrumpetFrance30JUL201188674
13UkuleleHawaii10DEC201660482
14ViolinItaly15FEB200878888


proc sort data=instruments_rated; by Instrument_Name; run;

proc print data=instruments_rated;

run;

OUTPUT:

ObsInstrument_NameOrigin_CountrySound_LevelComplexityPopularityImpact_ScoreLaunch_DatePopularity_Rating
1DrumsUSA9578566520APR2015HIGH
2GuitarUSA8569051001JAN2010HIGH
3HarmoniumIndia7367143805JAN2018MEDIUM
4PianoGermany8099272005MAY2005HIGH
5SaxophoneUSA9078063018AUG2013MEDIUM
6SitarIndia7587660012JUN2009MEDIUM
7TablaIndia7077849025SEP2014MEDIUM
8TrumpetFrance8867452830JUL2011MEDIUM
9UkuleleHawaii6048224010DEC2016MEDIUM
10ViolinItaly7888862415FEB2008HIGH


data instruments_merged;

    merge instruments_raw(in=a)

          instruments_rated(in=b);

    by Instrument_Name;

    if a;

run;

proc print data=instruments_merged;

run;

OUTPUT:

ObsInstrument_NameOrigin_CountryLaunch_DateSound_LevelComplexityPopularityImpact_ScorePopularity_Rating
1BanjoUSA15FEB202082665. 
2CelloGermany19NOV200672866. 
3DrumsUSA20APR201595785665HIGH
4FluteIndia10MAR201265570. 
5GuitarUSA01JAN201085690510HIGH
6HarmoniumIndia05JAN201873671438MEDIUM
7HarpIreland02OCT200768960. 
8PianoGermany05MAY200580992720HIGH
9SaxophoneUSA18AUG201390780630MEDIUM
10SitarIndia12JUN200975876600MEDIUM
11TablaIndia25SEP201470778490MEDIUM
12TrumpetFrance30JUL201188674528MEDIUM
13UkuleleHawaii10DEC201660482240MEDIUM
14ViolinItaly15FEB200878888624HIGH


11.PROC TRANSPOSE – STRUCTURAL TRANSFORMATION

proc transpose data=instruments_rated out=transposed prefix=Value_;

    by Instrument_Name;

    var Sound_Level Complexity Popularity;

run;

proc print data=transposed;

run;

OUTPUT:

ObsInstrument_Name_NAME_Value_1
1DrumsSound_Level95
2DrumsComplexity7
3DrumsPopularity85
4GuitarSound_Level85
5GuitarComplexity6
6GuitarPopularity90
7HarmoniumSound_Level73
8HarmoniumComplexity6
9HarmoniumPopularity71
10PianoSound_Level80
11PianoComplexity9
12PianoPopularity92
13SaxophoneSound_Level90
14SaxophoneComplexity7
15SaxophonePopularity80
16SitarSound_Level75
17SitarComplexity8
18SitarPopularity76
19TablaSound_Level70
20TablaComplexity7
21TablaPopularity78
22TrumpetSound_Level88
23TrumpetComplexity6
24TrumpetPopularity74
25UkuleleSound_Level60
26UkuleleComplexity4
27UkulelePopularity82
28ViolinSound_Level78
29ViolinComplexity8
30ViolinPopularity88




To Visit My Previous History Of Sas Dataset:Click Here
To Visit My Previous Sas Environment:Click Here
To Visit My Previous Creating New Libraries:Click Here
To Visit My Previous Creating New Datasets:Click Here



Follow Us On : 


 


--->FOLLOW OUR BLOG FOR MORE INFORMATION.

--->PLEASE DO COMMENTS AND SHARE OUR BLOG.

No comments:

Post a Comment