Thursday, 8 January 2026

364.SAS STADIUMS DATA CREATION AND ANALYSIS DATA STEP | PROC SQL | PROC MEANS | PROC REG | PROC SGPLOT | MACROS

SAS STADIUMS DATA CREATION AND ANALYSIS DATA STEP | PROC SQL | PROC MEANS | PROC REG | PROC SGPLOT | MACROS

options nocenter;

1.Creating Stadium Raw Master Dataset

data stadiums_raw;

    length Stadium_Name $30 Country $20;

    input Stadium_Name $ Country $ Capacity Year_Built Revenue Maintenance_Cost;

    Built_Date = mdy(1,1,Year_Built);

    format Built_Date date9.;

datalines;

Wembley England 90000 2007 120 45

Camp_Nou Spain 99354 1957 140 55

Melbourne_Cricket_Ground Australia 100024 1853 160 70

Maracana Brazil 78838 1950 95 40

MetLife USA 82500 2010 180 60

FNB_Stadium SouthAfrica 94736 1989 85 35

Old_Trafford England 74879 1910 130 50

Allianz_Arena Germany 75000 2005 155 58

Birds_Nest China 80000 2008 110 65

San_Siro Italy 80018 1926 125 52

Azteca Mexico 87000 1966 105 42

Lusail Qatar 80000 2022 200 75

;

run;

proc print data=stadiums_raw;

run;

OUTPUT:

ObsStadium_NameCountryCapacityYear_BuiltRevenueMaintenance_CostBuilt_Date
1WembleyEngland9000020071204501JAN2007
2Camp_NouSpain9935419571405501JAN1957
3Melbourne_Cricket_GroundAustralia10002418531607001JAN1853
4MaracanaBrazil788381950954001JAN1950
5MetLifeUSA8250020101806001JAN2010
6FNB_StadiumSouthAfrica947361989853501JAN1989
7Old_TraffordEngland7487919101305001JAN1910
8Allianz_ArenaGermany7500020051555801JAN2005
9Birds_NestChina8000020081106501JAN2008
10San_SiroItaly8001819261255201JAN1926
11AztecaMexico8700019661054201JAN1966
12LusailQatar8000020222007501JAN2022


2.Creating Derived Variables

2.1 Stadium Age & Profit Calculation

data stadiums_derived;

    set stadiums_raw;

    Stadium_Age = intck('year', Built_Date, today());

    Profit = Revenue - Maintenance_Cost;

run;

proc print data=stadiums_derived;

run;

OUTPUT:

ObsStadium_NameCountryCapacityYear_BuiltRevenueMaintenance_CostBuilt_DateStadium_AgeProfit
1WembleyEngland9000020071204501JAN20071975
2Camp_NouSpain9935419571405501JAN19576985
3Melbourne_Cricket_GroundAustralia10002418531607001JAN185317390
4MaracanaBrazil788381950954001JAN19507655
5MetLifeUSA8250020101806001JAN201016120
6FNB_StadiumSouthAfrica947361989853501JAN19893750
7Old_TraffordEngland7487919101305001JAN191011680
8Allianz_ArenaGermany7500020051555801JAN20052197
9Birds_NestChina8000020081106501JAN20081845
10San_SiroItaly8001819261255201JAN192610073
11AztecaMexico8700019661054201JAN19666063
12LusailQatar8000020222007501JAN20224125


3.Date Manipulation with INTNX

3.1 Renovation Date Estimation

data stadiums_dates;

    set stadiums_derived;

    Renovation_Date = intnx('year', Built_Date, 20);

    format Renovation_Date date9.;

run;

proc print data=stadiums_dates;

run;

OUTPUT:

ObsStadium_NameCountryCapacityYear_BuiltRevenueMaintenance_CostBuilt_DateStadium_AgeProfitRenovation_Date
1WembleyEngland9000020071204501JAN2007197501JAN2027
2Camp_NouSpain9935419571405501JAN1957698501JAN1977
3Melbourne_Cricket_GroundAustralia10002418531607001JAN18531739001JAN1873
4MaracanaBrazil788381950954001JAN1950765501JAN1970
5MetLifeUSA8250020101806001JAN20101612001JAN2030
6FNB_StadiumSouthAfrica947361989853501JAN1989375001JAN2009
7Old_TraffordEngland7487919101305001JAN19101168001JAN1930
8Allianz_ArenaGermany7500020051555801JAN2005219701JAN2025
9Birds_NestChina8000020081106501JAN2008184501JAN2028
10San_SiroItaly8001819261255201JAN19261007301JAN1946
11AztecaMexico8700019661054201JAN1966606301JAN1986
12LusailQatar8000020222007501JAN2022412501JAN2042


4.Descriptive Statistics (PROC MEANS)

proc means data=stadiums_dates mean min max std;

    var Capacity Revenue Maintenance_Cost Stadium_Age Profit;

run;

OUTPUT:

The MEANS Procedure

VariableMeanMinimumMaximumStd Dev
Capacity
Revenue
Maintenance_Cost
Stadium_Age
Profit
85195.75
133.7500000
53.9166667
59.0833333
79.8333333
74879.00
85.0000000
35.0000000
4.0000000
45.0000000
100024.00
200.0000000
75.0000000
173.0000000
125.0000000
8926.79
34.7147467
12.3322072
50.8106258
25.4980689

5.SQL-Based Analysis (PROC SQL)

5.1 High Revenue Stadiums

proc sql;

    create table high_revenue as

    select Stadium_Name, Country, Revenue

    from stadiums_dates

    where Revenue > 130

    order by Revenue desc;

quit;

proc print data=high_revenue;

run;

OUTPUT:

ObsStadium_NameCountryRevenue
1LusailQatar200
2MetLifeUSA180
3Melbourne_Cricket_GroundAustralia160
4Allianz_ArenaGermany155
5Camp_NouSpain140


6.Regression Analysis (PROC REG)

6.1 Capacity Impact on Revenue

proc reg data=stadiums_dates;

    model Revenue = Capacity Stadium_Age;

run;

quit;

OUTPUT:

The REG Procedure

Model: MODEL1

Dependent Variable: Revenue

Number of Observations Read12
Number of Observations Used12
Analysis of Variance
SourceDFSum of
Squares
Mean
Square
F ValuePr > F
Model2212.66969106.334850.070.9298
Error9130441449.28670  
Corrected Total1113256   
Root MSE38.06950R-Square0.0160
Dependent Mean133.75000Adj R-Sq-0.2026
Coeff Var28.46318  
Parameter Estimates
VariableDFParameter
Estimate
Standard
Error
t ValuePr > |t|
Intercept1161.44763112.112591.440.1837
Capacity1-0.000285720.00135-0.210.8372
Stadium_Age1-0.056790.23727-0.240.8162

The REG Procedure

Model: MODEL1

Dependent Variable: Revenue

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

7.Visualization (PROC SGPLOT)

proc sgplot data=stadiums_dates;

    scatter x=Capacity y=Revenue;

    reg x=Capacity y=Revenue;

    title "Revenue vs Capacity Analysis";

run;

OUTPUT:

The SGPlot Procedure


8.Macro for Stadium Performance Rating

%macro stadium_rating;

data stadiums_rating;

    set stadiums_dates;

    if Profit >= 100 then Rating="Excellent";

    else if Profit >= 70 then Rating="Good";

    else if Profit >= 40 then Rating="Average";

    else Rating="Poor";

run;

proc print data=stadiums_rating;

run;

%mend;


%stadium_rating;

OUTPUT:

ObsStadium_NameCountryCapacityYear_BuiltRevenueMaintenance_CostBuilt_DateStadium_AgeProfitRenovation_DateRating
1WembleyEngland9000020071204501JAN2007197501JAN2027Good
2Camp_NouSpain9935419571405501JAN1957698501JAN1977Good
3Melbourne_Cricket_GroundAustralia10002418531607001JAN18531739001JAN1873Good
4MaracanaBrazil788381950954001JAN1950765501JAN1970Average
5MetLifeUSA8250020101806001JAN20101612001JAN2030Excellent
6FNB_StadiumSouthAfrica947361989853501JAN1989375001JAN2009Average
7Old_TraffordEngland7487919101305001JAN19101168001JAN1930Good
8Allianz_ArenaGermany7500020051555801JAN2005219701JAN2025Good
9Birds_NestChina8000020081106501JAN2008184501JAN2028Average
10San_SiroItaly8001819261255201JAN19261007301JAN1946Good
11AztecaMexico8700019661054201JAN1966606301JAN1986Average
12LusailQatar8000020222007501JAN2022412501JAN2042Excellent


9.APPEND Example

9.1 New Stadium Data

data new_stadium;

    length Stadium_Name $30 Country $20;

    Stadium_Name="SoFi";

    Country="USA";

    Capacity=70000;

    Year_Built=2020;

    Revenue=210;

    Maintenance_Cost=80;

    Built_Date=mdy(1,1,2020);

    format Built_Date date9.;

run;

proc print data=new_stadium;

run;

OUTPUT:

ObsStadium_NameCountryCapacityYear_BuiltRevenueMaintenance_CostBuilt_Date
1SoFiUSA7000020202108001JAN2020


proc append base=stadiums_raw 

            data=new_stadium force;

run;

proc print data=stadiums_raw;

run;

OUTPUT:

ObsStadium_NameCountryCapacityYear_BuiltRevenueMaintenance_CostBuilt_Date
1WembleyEngland9000020071204501JAN2007
2Camp_NouSpain9935419571405501JAN1957
3Melbourne_Cricket_GroundAustralia10002418531607001JAN1853
4MaracanaBrazil788381950954001JAN1950
5MetLifeUSA8250020101806001JAN2010
6FNB_StadiumSouthAfrica947361989853501JAN1989
7Old_TraffordEngland7487919101305001JAN1910
8Allianz_ArenaGermany7500020051555801JAN2005
9Birds_NestChina8000020081106501JAN2008
10San_SiroItaly8001819261255201JAN1926
11AztecaMexico8700019661054201JAN1966
12LusailQatar8000020222007501JAN2022
13SoFiUSA7000020202108001JAN2020


10.SET vs MERGE Demonstration

10.1 SET (Vertical Combination)

data combined_stadiums;

    set stadiums_raw new_stadium;

run;

proc print data=combined_stadiums;

run;

OUTPUT:

ObsStadium_NameCountryCapacityYear_BuiltRevenueMaintenance_CostBuilt_Date
1WembleyEngland9000020071204501JAN2007
2Camp_NouSpain9935419571405501JAN1957
3Melbourne_Cricket_GroundAustralia10002418531607001JAN1853
4MaracanaBrazil788381950954001JAN1950
5MetLifeUSA8250020101806001JAN2010
6FNB_StadiumSouthAfrica947361989853501JAN1989
7Old_TraffordEngland7487919101305001JAN1910
8Allianz_ArenaGermany7500020051555801JAN2005
9Birds_NestChina8000020081106501JAN2008
10San_SiroItaly8001819261255201JAN1926
11AztecaMexico8700019661054201JAN1966
12LusailQatar8000020222007501JAN2022
13SoFiUSA7000020202108001JAN2020
14SoFiUSA7000020202108001JAN2020


10.2 MERGE (Horizontal Combination)

proc sort data=stadiums_dates;

    by Stadium_Name;

run;

proc print data=stadiums_dates;

run;

OUTPUT:

ObsStadium_NameCountryCapacityYear_BuiltRevenueMaintenance_CostBuilt_DateStadium_AgeProfitRenovation_Date
1Allianz_ArenaGermany7500020051555801JAN2005219701JAN2025
2AztecaMexico8700019661054201JAN1966606301JAN1986
3Birds_NestChina8000020081106501JAN2008184501JAN2028
4Camp_NouSpain9935419571405501JAN1957698501JAN1977
5FNB_StadiumSouthAfrica947361989853501JAN1989375001JAN2009
6LusailQatar8000020222007501JAN2022412501JAN2042
7MaracanaBrazil788381950954001JAN1950765501JAN1970
8Melbourne_Cricket_GroundAustralia10002418531607001JAN18531739001JAN1873
9MetLifeUSA8250020101806001JAN20101612001JAN2030
10Old_TraffordEngland7487919101305001JAN19101168001JAN1930
11San_SiroItaly8001819261255201JAN19261007301JAN1946
12WembleyEngland9000020071204501JAN2007197501JAN2027


proc sort data=high_revenue;

    by Stadium_Name;

run;

proc print data=high_revenue;

run;

OUTPUT:

ObsStadium_NameCountryRevenue
1Allianz_ArenaGermany155
2Camp_NouSpain140
3LusailQatar200
4Melbourne_Cricket_GroundAustralia160
5MetLifeUSA180


data stadiums_merge;

    merge stadiums_dates(in=a) high_revenue(in=b);

    by Stadium_Name;

    if a;

run;

proc print data=stadiums_merge;

run;

OUTPUT:

ObsStadium_NameCountryCapacityYear_BuiltRevenueMaintenance_CostBuilt_DateStadium_AgeProfitRenovation_Date
1Allianz_ArenaGermany7500020051555801JAN2005219701JAN2025
2AztecaMexico8700019661054201JAN1966606301JAN1986
3Birds_NestChina8000020081106501JAN2008184501JAN2028
4Camp_NouSpain9935419571405501JAN1957698501JAN1977
5FNB_StadiumSouthAfrica947361989853501JAN1989375001JAN2009
6LusailQatar8000020222007501JAN2022412501JAN2042
7MaracanaBrazil788381950954001JAN1950765501JAN1970
8Melbourne_Cricket_GroundAustralia10002418531607001JAN18531739001JAN1873
9MetLifeUSA8250020101806001JAN20101612001JAN2030
10Old_TraffordEngland7487919101305001JAN19101168001JAN1930
11San_SiroItaly8001819261255201JAN19261007301JAN1946
12WembleyEngland9000020071204501JAN2007197501JAN2027


11.TRANSPOSE Example

11.1 Converting Columns to Rows

proc transpose data=stadiums_dates out=stadiums_t;

    var Revenue Maintenance_Cost Profit;

    by Stadium_Name;

run;

proc print data=stadiums_t;

run;

OUTPUT:

ObsStadium_Name_NAME_COL1
1Allianz_ArenaRevenue155
2Allianz_ArenaMaintenance_Cost58
3Allianz_ArenaProfit97
4AztecaRevenue105
5AztecaMaintenance_Cost42
6AztecaProfit63
7Birds_NestRevenue110
8Birds_NestMaintenance_Cost65
9Birds_NestProfit45
10Camp_NouRevenue140
11Camp_NouMaintenance_Cost55
12Camp_NouProfit85
13FNB_StadiumRevenue85
14FNB_StadiumMaintenance_Cost35
15FNB_StadiumProfit50
16LusailRevenue200
17LusailMaintenance_Cost75
18LusailProfit125
19MaracanaRevenue95
20MaracanaMaintenance_Cost40
21MaracanaProfit55
22Melbourne_Cricket_GroundRevenue160
23Melbourne_Cricket_GroundMaintenance_Cost70
24Melbourne_Cricket_GroundProfit90
25MetLifeRevenue180
26MetLifeMaintenance_Cost60
27MetLifeProfit120
28Old_TraffordRevenue130
29Old_TraffordMaintenance_Cost50
30Old_TraffordProfit80
31San_SiroRevenue125
32San_SiroMaintenance_Cost52
33San_SiroProfit73
34WembleyRevenue120
35WembleyMaintenance_Cost45
36WembleyProfit75



To Visit My Previous Online Streaming Flatform Dataset:Click Here
To Visit My Previous Statistical Evaluation Of Clinical Trials:Click Here
To Visit My Previous Unlocking Retail Insights Dataset:Click Here
To Visit My Previous Sas Interview Questions-1:Click Here





Follow Us On : 


 


--->FOLLOW OUR BLOG FOR MORE INFORMATION.

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

No comments:

Post a Comment