Tuesday, 26 August 2025

271.GANESH MANDAPS IN INDIA: DATA VISUALIZATION AND ANALYSIS VIA PROC SQL | PROC SGPLOT | PROC MEANS | PROC PRINT

GANESH MANDAPS IN INDIA: DATA VISUALIZATION AND ANALYSIS VIA PROC SQL | PROC SGPLOT | PROC MEANS | PROC PRINT

 /*Creating A Dataset Of Ganesh Mandap In India*/

Step 1: create Ganesh Mandap dataset 

options nocenter;

data ganesh_mandap;

  length MandapType $15 Location $15 Material $15 Weather $10;

  input MandapType $ Location $ Material $ Visitors Duration Cost Volunteers 

        Satisfaction EnvironmentalImpact SocialMedia Weather $;

  datalines;

Traditional Pune Clay 5000 10 12000 50 8 3 450 Sunny

Ecofriendly Guwahati Bamboo 3500 7 8000 30 9 5 320 Rainy

Marble Chennai Marble 4500 9 25000 40 7 2 410 Sunny

Terracotta Kolkata Terracotta 3000 8 6000 25 8 4 180 Cloudy

Wooden Bengaluru Wood 4200 10 15000 45 9 3 375 Sunny

Glass Delhi Glass 6000 5 30000 60 6 1 900 Rainy

Papermache Ahmedabad Paper 2500 6 5000 20 7 5 150 Sunny

Sand Goa Sand 2700 4 4000 15 8 5 230 Sunny

Flower Kerala Flowers 3200 11 7000 35 10 2 260 Cloudy

Metal Jaipur Metal 2900 7 10000 28 7 3 190 Sunny

Fusion Hyderabad Glass/Wood 4800 8 18000 38 9 3 550 Sunny

;

run;

proc print data=ganesh_mandap;

  title "Ganesh Mandap Data Overview";

run;

Output:

Ganesh Mandap Data Overview

ObsMandapTypeLocationMaterialWeatherVisitorsDurationCostVolunteersSatisfactionEnvironmentalImpactSocialMedia
1TraditionalPuneClaySunny500010120005083450
2EcofriendlyGuwahatiBambooRainy3500780003095320
3MarbleChennaiMarbleSunny45009250004072410
4TerracottaKolkataTerracottaCloudy3000860002584180
5WoodenBengaluruWoodSunny420010150004593375
6GlassDelhiGlassRainy60005300006061900
7PapermacheAhmedabadPaperSunny2500650002075150
8SandGoaSandSunny2700440001585230
9FlowerKeralaFlowersCloudy320011700035102260
10MetalJaipurMetalSunny29007100002873190
11FusionHyderabadGlass/WoodSunny48008180003893550

Step 2: Frequency count of Mandap Types 

proc freq data=ganesh_mandap;

  tables MandapType / nocum nopercent;

  title "Frequency of Different Mandap Types";

run;

Output:

Frequency of Different Mandap Types

The FREQ Procedure

MandapTypeFrequency
Ecofriendly1
Flower1
Fusion1
Glass1
Marble1
Metal1
Papermache1
Sand1
Terracotta1
Traditional1
Wooden1

Step 3: Descriptive statistics for Visitors & Cost 

proc means data=ganesh_mandap mean median min max std;

  var Visitors Cost;

  title "Visitor Count & Decoration Cost Statistics";

run;

Output:

Visitor Count & Decoration Cost Statistics

The MEANS Procedure

VariableMeanMedianMinimumMaximumStd Dev
Visitors
Cost
3845.45
12727.27
3500.00
10000.00
2500.00
4000.00
6000.00
30000.00
1127.27
8521.63

Step 4: Calculate average Satisfaction Score by Mandap Type using PROC SQL 

proc sql;

  title "Average Satisfaction Score by Mandap Type";

  select MandapType, avg(Satisfaction) as AvgSatisfaction

  from ganesh_mandap

  group by MandapType

  order by AvgSatisfaction desc;

quit;

Output:

Average Satisfaction Score by Mandap Type

MandapTypeAvgSatisfaction
Flower10
Fusion9
Wooden9
Ecofriendly9
Traditional8
Terracotta8
Sand8
Papermache7
Metal7
Marble7
Glass6

Step 5: Sort data by Visitors descending to find most popular Mandaps 

proc sort data=ganesh_mandap out=sorted_visitors;

  by descending Visitors;

run;

proc print data=sorted_visitors (obs=5);

  title "Top 5 Mandaps by Visitor Count";

run;

Output:

Top 5 Mandaps by Visitor Count

ObsMandapTypeLocationMaterialWeatherVisitorsDurationCostVolunteersSatisfactionEnvironmentalImpactSocialMedia
1GlassDelhiGlassRainy60005300006061900
2TraditionalPuneClaySunny500010120005083450
3FusionHyderabadGlass/WoodSunny48008180003893550
4MarbleChennaiMarbleSunny45009250004072410
5WoodenBengaluruWoodSunny420010150004593375

Step 6: Creating Macro to dynamically generate summary report by any numeric variable 

%macro summary_report(varlist);

  %do i=1 %to %sysfunc(countw(&varlist));

    %let var=%scan(&varlist, &i);

    proc means data=ganesh_mandap mean median std min max;

      var &var;

      title "Summary Statistics for &var";

    run;

  %end;

%mend;


%summary_report(Visitors Cost Duration Volunteers);

Output:

Summary Statistics for Visitors

The MEANS Procedure

Analysis Variable : Visitors
MeanMedianStd DevMinimumMaximum
3845.453500.001127.272500.006000.00

Summary Statistics for Cost

The MEANS Procedure

Analysis Variable : Cost
MeanMedianStd DevMinimumMaximum
12727.2710000.008521.634000.0030000.00

Summary Statistics for Duration

The MEANS Procedure

Analysis Variable : Duration
MeanMedianStd DevMinimumMaximum
7.72727278.00000002.19503574.000000011.0000000

Summary Statistics for Volunteers

The MEANS Procedure

Analysis Variable : Volunteers
MeanMedianStd DevMinimumMaximum
35.090909135.000000013.352561915.000000060.0000000

Step 7: Using PROC FORMAT to categorize Environmental Impact 

proc format;

  value envfmt

    1 = 'Low Impact'

    2 = 'Low Impact'

    3 = 'Moderate Impact'

    4 = 'High Impact'

    5 = 'Very High Impact';

run;


proc freq data=ganesh_mandap;

  tables EnvironmentalImpact / norow nocol;

  format EnvironmentalImpact envfmt.;

  title "Environmental Impact Categorization";

run;

Output:

Environmental Impact Categorization

The FREQ Procedure

EnvironmentalImpactFrequencyPercentCumulative
Frequency
Cumulative
Percent
Low Impact327.27327.27
Moderate Impact436.36763.64
High Impact19.09872.73
Very High Impact327.2711100.00

Step 8: Transpose dataset to see Visitors by Location 

proc sort data=ganesh_mandap;

 by MandapType;

run;


proc transpose data=ganesh_mandap out=visitors_by_location(drop=_Name_) prefix=Visitors_;

  by MandapType;

  id Location;

  var Visitors;

run;


proc print data=visitors_by_location;

  title "Visitors Transposed by Mandap Type and Location";

run;

Output:

Visitors Transposed by Mandap Type and Location

ObsMandapTypeVisitors_GuwahatiVisitors_KeralaVisitors_HyderabadVisitors_DelhiVisitors_ChennaiVisitors_JaipurVisitors_AhmedabadVisitors_GoaVisitors_KolkataVisitors_PuneVisitors_Bengaluru
1Ecofriendly3500..........
2Flower.3200.........
3Fusion..4800........
4Glass...6000.......
5Marble....4500......
6Metal.....2900.....
7Papermache......2500....
8Sand.......2700...
9Terracotta........3000..
10Traditional.........5000.
11Wooden..........4200

Step 9: Report combining multiple variables with PROC REPORT 

proc report data=ganesh_mandap nowd;

  columns MandapType Location Visitors Cost Satisfaction EnvironmentalImpact;

  define MandapType / group;

  define Location / group;

  define Visitors / analysis sum;

  define Cost / analysis mean format=dollar12.;

  define Satisfaction / analysis mean;

  define EnvironmentalImpact / format=envfmt.;

  title "Ganesh Mandap Report: Visitor & Cost Summary";

run;

Output:

Ganesh Mandap Report: Visitor & Cost Summary

MandapTypeLocationVisitorsCostSatisfactionEnvironmentalImpact
EcofriendlyGuwahati3500$8,0009Very High Impact
FlowerKerala3200$7,00010Low Impact
FusionHyderabad4800$18,0009Moderate Impact
GlassDelhi6000$30,0006Low Impact
MarbleChennai4500$25,0007Low Impact
MetalJaipur2900$10,0007Moderate Impact
PapermacheAhmedabad2500$5,0007Very High Impact
SandGoa2700$4,0008Very High Impact
TerracottaKolkata3000$6,0008High Impact
TraditionalPune5000$12,0008Moderate Impact
WoodenBengaluru4200$15,0009Moderate Impact

Step 10: Visualizing Visitor Count across Mandap Types with PROC SGPLOT 

proc sgplot data=ganesh_mandap;

  vbar MandapType / response=Visitors datalabel;

  title "Visitor Counts by Mandap Type";

run;

Output:

The SGPlot Procedure


Step 11: Advanced PROC SQL Join - If we had a second dataset with volunteer details 

data volunteers;

  input Location $ Volunteers Available_Hours;

  datalines;

Pune 50 340

Guwahati 30 180

Chennai 40 320

Kolkata 25 120

Bengaluru 45 360

Delhi 60 400

Ahmedabad 20 150

Goa 15 90

Kerala 35 280

Jaipur 28 210

Hyderabad 65 450

;

run;

proc print;run;

Output:

ObsLocationVolunteersAvailable_Hours
1Pune50340
2Guwahati30180
3Chennai40320
4Kolkata25120
5Bengalur45360
6Delhi60400
7Ahmedaba20150
8Goa1590
9Kerala35280
10Jaipur28210
11Hyderaba65450


proc sql;

  title "Join Ganesh Mandap with Volunteers Data for Analysis";

  select a.Location, a.MandapType, a.Visitors, b.Volunteers, b.Available_Hours

  from ganesh_mandap as a

  inner join volunteers as b

  on a.Location = b.Location

  order by a.Visitors desc;

quit;

Output:

Join Ganesh Mandap with Volunteers Data for Analysis

LocationMandapTypeVisitorsVolunteersAvailable_Hours
DelhiGlass600060400
PuneTraditional500050340
ChennaiMarble450040320
GuwahatiEcofriendly350030180
KeralaFlower320035280
KolkataTerracotta300025120
JaipurMetal290028210
GoaSand27001590

Step 12: Macro to filter mandaps with visitor count above a threshold 

%macro filter_visitors(threshold=);

  proc print data=ganesh_mandap;

    where Visitors > &threshold;

    title "Mandaps with Visitors Greater than &threshold";

  run;

%mend;


%filter_visitors(threshold=4000);

Output:

Mandaps with Visitors Greater than 4000

ObsMandapTypeLocationMaterialWeatherVisitorsDurationCostVolunteersSatisfactionEnvironmentalImpactSocialMedia
3FusionHyderabadGlass/WoodSunny48008180003893550
4GlassDelhiGlassRainy60005300006061900
5MarbleChennaiMarbleSunny45009250004072410
10TraditionalPuneClaySunny500010120005083450
11WoodenBengaluruWoodSunny420010150004593375



To Visit My Previous E-Commerce Dataset:Click Here
To Visit My Previous Length,Input,Retain Statements:Click Here
To Visit My Previous Urban Traffic Dataset:Click Here
To Visit My Previous Home Energy Consumption Dataset:Click Here



Follow Us On : 


 


--- FOLLOW OUR BLOG FOR MORE INFORMATION.

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


No comments:

Post a Comment