295.DATA CREATION AND ANALYTICAL REPRESENTATION OF CAFES FAMILY DATASET IN BENGALURU USING DATA STEP | PROC FORMAT | PROC TRANSPOSE | PROC TABULATE | PROC SGPLOT | PROC SQL
DATA CREATION AND ANALYTICAL REPRESENTATION OF CAFES FAMILY DATASET IN BENGALURU USING DATA STEP | PROC FORMAT | PROC TRANSPOSE | PROC TABULATE | PROC SGPLOT | PROC SQL
1. Create dataset: CAFES_IN_BENGALURU (keeps the variable names you asked for)
data work.cafes_bengaluru;
length CafeID $6 CafeName $60 Type $20 AnchorBrands $80 OwnerFamily $40;
input CafeID $ CafeName & $ Type $ Area_sqft NumStores AnchorBrands & $ ParkingCap AnnualFootfall AvgTicket OwnerFamily $;
datalines4;
C001 "Cornerstone Cafe" Neighborhood 1200 8 "CoffeeBlend;BakeryDelights" 40 50000 3.20 "Rao"
C002 "Indie Brew Co." Boutique 900 6 "SingleOrigin;VeganSnacks" 20 35000 4.50 "Patel"
C003 "Heritage Beans" Heritage 1500 10 "TraditionalTea;LocalSweets" 60 80000 2.80 "Shetty"
C004 "Riverside Roasters" Riverside 2000 12 "RoastMasters;Bistro" 80 120000 5.00 "Mukherjee"
C005 "Metro Espresso" MallLike 3000 20 "EspressoWorld;DessertCorner" 150 220000 4.75 "Kumar"
C006 "Greenhouse Cafe" Garden 1800 9 "OrganicBrew;SaladBar" 50 65000 6.00 "Iyer"
C007 "Attic & Aroma" Boutique 800 5 "ArtisanToast;ColdBrew" 15 28000 3.90 "Singh"
C008 "Platform 8 Cafe" Transit 1100 7 "QuickBites;ExpressCoffee" 30 42000 2.50 "Reddy"
C009 "Sunset Veranda" Rooftop 1600 8 "CocktailCafe;LightEats" 40 90000 7.25 "Sharma"
C010 "BookNook Coffee" Niche 950 6 "UsedBooks;LatteLab" 18 32000 3.30 "Gupta"
C011 "Cycle & Sip" Active 1000 6 "EnergyBars;Espresso" 25 40000 3.00 "Menon"
C012 "Lakeside Lounge" Riverside 2200 11 "SeaFoodSnacks;BrewHouse" 90 130000 6.50 "Chopra"
C013 "Minimal Mug" Minimalist 700 4 "MicroRoast;MinimalEats" 10 20000 4.10 "Desai"
C014 "Canvas Cafe" Artsy 1400 9 "GalleryTea;FusionBakes" 45 70000 5.50 "Nair"
C015 "Late Night Latte" Night 1300 7 "NightBites;EspressoBar" 35 60000 4.90 "Bose"
C016 "Bengaluru Brew Yard" Industrial 2500 14 "CraftBeer;CoffeeLab" 100 180000 8.00 "Pradhan"
C017 "TownSquare Cafe" Neighborhood 1700 10 "FamilyMeals;KidsCorner" 70 100000 4.25 "Rao"
C018 "Zenith Coffee Loft" Boutique 900 5 "ZenTea;SteamedBuns" 20 29000 5.75 "Khan"
C019 "Seaside (concept)" Concept 2100 13 "SeaBreeze;GourmetSandwiches" 85 140000 7.00 "Verma"
C020 "Beanstalk" Chain 3500 25 "BeanChain;PastryPoint" 200 300000 3.95 "Patel"
C021 "Monsoon Mornings" Garden 1600 9 "RainBrew;ComfortFood" 50 76000 4.60 "Iyer"
C022 "Echo Coffee Lab" Minimalist 800 4 "Experimental;DessertLab" 12 21000 5.10 "Saxena"
;;;;
run;
proc print data=work.cafes_bengaluru;
run;
OUTPUT:
| Obs | CafeID | CafeName | Type | AnchorBrands | OwnerFamily | Area_sqft | NumStores | ParkingCap | AnnualFootfall | AvgTicket |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | C001 | "Cornerstone Cafe" | Neighborhood | "CoffeeBlend;BakeryDelights" | "Rao" | 1200 | 8 | 40 | 50000 | 3.20 |
| 2 | C002 | "Indie Brew Co." | Boutique | "SingleOrigin;VeganSnacks" | "Patel" | 900 | 6 | 20 | 35000 | 4.50 |
| 3 | C003 | "Heritage Beans" | Heritage | "TraditionalTea;LocalSweets" | "Shetty" | 1500 | 10 | 60 | 80000 | 2.80 |
| 4 | C004 | "Riverside Roasters" | Riverside | "RoastMasters;Bistro" | "Mukherjee" | 2000 | 12 | 80 | 120000 | 5.00 |
| 5 | C005 | "Metro Espresso" | MallLike | "EspressoWorld;DessertCorner" | "Kumar" | 3000 | 20 | 150 | 220000 | 4.75 |
| 6 | C006 | "Greenhouse Cafe" | Garden | "OrganicBrew;SaladBar" | "Iyer" | 1800 | 9 | 50 | 65000 | 6.00 |
| 7 | C007 | "Attic & Aroma" | Boutique | "ArtisanToast;ColdBrew" | "Singh" | 800 | 5 | 15 | 28000 | 3.90 |
| 8 | C008 | "Platform 8 Cafe" | Transit | "QuickBites;ExpressCoffee" | "Reddy" | 1100 | 7 | 30 | 42000 | 2.50 |
| 9 | C009 | "Sunset Veranda" | Rooftop | "CocktailCafe;LightEats" | "Sharma" | 1600 | 8 | 40 | 90000 | 7.25 |
| 10 | C010 | "BookNook Coffee" | Niche | "UsedBooks;LatteLab" | "Gupta" | 950 | 6 | 18 | 32000 | 3.30 |
| 11 | C011 | "Cycle & Sip" | Active | "EnergyBars;Espresso" | "Menon" | 1000 | 6 | 25 | 40000 | 3.00 |
| 12 | C012 | "Lakeside Lounge" | Riverside | "SeaFoodSnacks;BrewHouse" | "Chopra" | 2200 | 11 | 90 | 130000 | 6.50 |
| 13 | C013 | "Minimal Mug" | Minimalist | "MicroRoast;MinimalEats" | "Desai" | 700 | 4 | 10 | 20000 | 4.10 |
| 14 | C014 | "Canvas Cafe" | Artsy | "GalleryTea;FusionBakes" | "Nair" | 1400 | 9 | 45 | 70000 | 5.50 |
| 15 | C015 | "Late Night Latte" | Night | "NightBites;EspressoBar" | "Bose" | 1300 | 7 | 35 | 60000 | 4.90 |
| 16 | C016 | "Bengaluru Brew Yard" | Industrial | "CraftBeer;CoffeeLab" | "Pradhan" | 2500 | 14 | 100 | 180000 | 8.00 |
| 17 | C017 | "TownSquare Cafe" | Neighborhood | "FamilyMeals;KidsCorner" | "Rao" | 1700 | 10 | 70 | 100000 | 4.25 |
| 18 | C018 | "Zenith Coffee Loft" | Boutique | "ZenTea;SteamedBuns" | "Khan" | 900 | 5 | 20 | 29000 | 5.75 |
| 19 | C019 | "Seaside (concept)" | Concept | "SeaBreeze;GourmetSandwiches" | "Verma" | 2100 | 13 | 85 | 140000 | 7.00 |
| 20 | C020 | "Beanstalk" | Chain | "BeanChain;PastryPoint" | "Patel" | 3500 | 25 | 200 | 300000 | 3.95 |
| 21 | C021 | "Monsoon Mornings" | Garden | "RainBrew;ComfortFood" | "Iyer" | 1600 | 9 | 50 | 76000 | 4.60 |
| 22 | C022 | "Echo Coffee Lab" | Minimalist | "Experimental;DessertLab" | "Saxena" | 800 | 4 | 12 | 21000 | 5.10 |
2. PROC FORMAT - create human-readable formats for Type and Owner family sizes
proc format;
value $typefmt
'Neighborhood' = 'Neighborhood Cafe'
'Boutique' = 'Boutique / Specialty'
'Heritage' = 'Heritage / Traditional'
'Riverside' = 'Waterfront / Riverside'
'MallLike' = 'Large / Mall-like'
'Garden' = 'Garden / Outdoor'
'Transit' = 'Transit / Station'
'Rooftop' = 'Rooftop / Scenic'
'Niche' = 'Niche / Theme'
'Active' = 'Active / Sports'
'Minimalist' = 'Minimalist'
'Artsy' = 'Artsy / Gallery'
'Night' = 'Night / 24hr'
'Industrial' = 'Industrial / Brewyard'
'Concept' = 'Concept'
'Chain' = 'Chain'
other = 'Other';
run;
LOG:
NOTE: Format $TYPEFMT has been output.
Apply format in a view or print
proc print data=work.cafes_bengaluru label;
format Type $typefmt.;
var CafeID CafeName Type Area_sqft NumStores AnchorBrands ParkingCap AnnualFootfall AvgTicket OwnerFamily;
title "CafƩs (represented with Mall* variable names) - sample print with formats";
run;
OUTPUT:
| Obs | CafeID | CafeName | Type | Area_sqft | NumStores | AnchorBrands | ParkingCap | AnnualFootfall | AvgTicket | OwnerFamily |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | C001 | "Cornerstone Cafe" | Neighborhood Cafe | 1200 | 8 | "CoffeeBlend;BakeryDelights" | 40 | 50000 | 3.20 | "Rao" |
| 2 | C002 | "Indie Brew Co." | Boutique / Specialty | 900 | 6 | "SingleOrigin;VeganSnacks" | 20 | 35000 | 4.50 | "Patel" |
| 3 | C003 | "Heritage Beans" | Heritage / Traditional | 1500 | 10 | "TraditionalTea;LocalSweets" | 60 | 80000 | 2.80 | "Shetty" |
| 4 | C004 | "Riverside Roasters" | Waterfront / Riverside | 2000 | 12 | "RoastMasters;Bistro" | 80 | 120000 | 5.00 | "Mukherjee" |
| 5 | C005 | "Metro Espresso" | Large / Mall-like | 3000 | 20 | "EspressoWorld;DessertCorner" | 150 | 220000 | 4.75 | "Kumar" |
| 6 | C006 | "Greenhouse Cafe" | Garden / Outdoor | 1800 | 9 | "OrganicBrew;SaladBar" | 50 | 65000 | 6.00 | "Iyer" |
| 7 | C007 | "Attic & Aroma" | Boutique / Specialty | 800 | 5 | "ArtisanToast;ColdBrew" | 15 | 28000 | 3.90 | "Singh" |
| 8 | C008 | "Platform 8 Cafe" | Transit / Station | 1100 | 7 | "QuickBites;ExpressCoffee" | 30 | 42000 | 2.50 | "Reddy" |
| 9 | C009 | "Sunset Veranda" | Rooftop / Scenic | 1600 | 8 | "CocktailCafe;LightEats" | 40 | 90000 | 7.25 | "Sharma" |
| 10 | C010 | "BookNook Coffee" | Niche / Theme | 950 | 6 | "UsedBooks;LatteLab" | 18 | 32000 | 3.30 | "Gupta" |
| 11 | C011 | "Cycle & Sip" | Active / Sports | 1000 | 6 | "EnergyBars;Espresso" | 25 | 40000 | 3.00 | "Menon" |
| 12 | C012 | "Lakeside Lounge" | Waterfront / Riverside | 2200 | 11 | "SeaFoodSnacks;BrewHouse" | 90 | 130000 | 6.50 | "Chopra" |
| 13 | C013 | "Minimal Mug" | Minimalist | 700 | 4 | "MicroRoast;MinimalEats" | 10 | 20000 | 4.10 | "Desai" |
| 14 | C014 | "Canvas Cafe" | Artsy / Gallery | 1400 | 9 | "GalleryTea;FusionBakes" | 45 | 70000 | 5.50 | "Nair" |
| 15 | C015 | "Late Night Latte" | Night / 24hr | 1300 | 7 | "NightBites;EspressoBar" | 35 | 60000 | 4.90 | "Bose" |
| 16 | C016 | "Bengaluru Brew Yard" | Industrial / Brewyard | 2500 | 14 | "CraftBeer;CoffeeLab" | 100 | 180000 | 8.00 | "Pradhan" |
| 17 | C017 | "TownSquare Cafe" | Neighborhood Cafe | 1700 | 10 | "FamilyMeals;KidsCorner" | 70 | 100000 | 4.25 | "Rao" |
| 18 | C018 | "Zenith Coffee Loft" | Boutique / Specialty | 900 | 5 | "ZenTea;SteamedBuns" | 20 | 29000 | 5.75 | "Khan" |
| 19 | C019 | "Seaside (concept)" | Concept | 2100 | 13 | "SeaBreeze;GourmetSandwiches" | 85 | 140000 | 7.00 | "Verma" |
| 20 | C020 | "Beanstalk" | Chain | 3500 | 25 | "BeanChain;PastryPoint" | 200 | 300000 | 3.95 | "Patel" |
| 21 | C021 | "Monsoon Mornings" | Garden / Outdoor | 1600 | 9 | "RainBrew;ComfortFood" | 50 | 76000 | 4.60 | "Iyer" |
| 22 | C022 | "Echo Coffee Lab" | Minimalist | 800 | 4 | "Experimental;DessertLab" | 12 | 21000 | 5.10 | "Saxena" |
3. PROC TRANSPOSE - flip long to wide for numeric metrics per Cafe
proc transpose data=work.cafes_bengaluru out=work.cafes_metrics_t prefix=Metric_;
by CafeID CafeName;
var Area_sqft NumStores ParkingCap AnnualFootfall AvgTicket;
run;
proc print data=work.cafes_metrics_t;
run;
OUTPUT:
| Obs | CafeID | CafeName | _NAME_ | Metric_1 |
|---|---|---|---|---|
| 1 | C001 | "Cornerstone Cafe" | Area_sqft | 1200.00 |
| 2 | C001 | "Cornerstone Cafe" | NumStores | 8.00 |
| 3 | C001 | "Cornerstone Cafe" | ParkingCap | 40.00 |
| 4 | C001 | "Cornerstone Cafe" | AnnualFootfall | 50000.00 |
| 5 | C001 | "Cornerstone Cafe" | AvgTicket | 3.20 |
| 6 | C002 | "Indie Brew Co." | Area_sqft | 900.00 |
| 7 | C002 | "Indie Brew Co." | NumStores | 6.00 |
| 8 | C002 | "Indie Brew Co." | ParkingCap | 20.00 |
| 9 | C002 | "Indie Brew Co." | AnnualFootfall | 35000.00 |
| 10 | C002 | "Indie Brew Co." | AvgTicket | 4.50 |
| 11 | C003 | "Heritage Beans" | Area_sqft | 1500.00 |
| 12 | C003 | "Heritage Beans" | NumStores | 10.00 |
| 13 | C003 | "Heritage Beans" | ParkingCap | 60.00 |
| 14 | C003 | "Heritage Beans" | AnnualFootfall | 80000.00 |
| 15 | C003 | "Heritage Beans" | AvgTicket | 2.80 |
| 16 | C004 | "Riverside Roasters" | Area_sqft | 2000.00 |
| 17 | C004 | "Riverside Roasters" | NumStores | 12.00 |
| 18 | C004 | "Riverside Roasters" | ParkingCap | 80.00 |
| 19 | C004 | "Riverside Roasters" | AnnualFootfall | 120000.00 |
| 20 | C004 | "Riverside Roasters" | AvgTicket | 5.00 |
| 21 | C005 | "Metro Espresso" | Area_sqft | 3000.00 |
| 22 | C005 | "Metro Espresso" | NumStores | 20.00 |
| 23 | C005 | "Metro Espresso" | ParkingCap | 150.00 |
| 24 | C005 | "Metro Espresso" | AnnualFootfall | 220000.00 |
| 25 | C005 | "Metro Espresso" | AvgTicket | 4.75 |
| 26 | C006 | "Greenhouse Cafe" | Area_sqft | 1800.00 |
| 27 | C006 | "Greenhouse Cafe" | NumStores | 9.00 |
| 28 | C006 | "Greenhouse Cafe" | ParkingCap | 50.00 |
| 29 | C006 | "Greenhouse Cafe" | AnnualFootfall | 65000.00 |
| 30 | C006 | "Greenhouse Cafe" | AvgTicket | 6.00 |
| 31 | C007 | "Attic & Aroma" | Area_sqft | 800.00 |
| 32 | C007 | "Attic & Aroma" | NumStores | 5.00 |
| 33 | C007 | "Attic & Aroma" | ParkingCap | 15.00 |
| 34 | C007 | "Attic & Aroma" | AnnualFootfall | 28000.00 |
| 35 | C007 | "Attic & Aroma" | AvgTicket | 3.90 |
| 36 | C008 | "Platform 8 Cafe" | Area_sqft | 1100.00 |
| 37 | C008 | "Platform 8 Cafe" | NumStores | 7.00 |
| 38 | C008 | "Platform 8 Cafe" | ParkingCap | 30.00 |
| 39 | C008 | "Platform 8 Cafe" | AnnualFootfall | 42000.00 |
| 40 | C008 | "Platform 8 Cafe" | AvgTicket | 2.50 |
| 41 | C009 | "Sunset Veranda" | Area_sqft | 1600.00 |
| 42 | C009 | "Sunset Veranda" | NumStores | 8.00 |
| 43 | C009 | "Sunset Veranda" | ParkingCap | 40.00 |
| 44 | C009 | "Sunset Veranda" | AnnualFootfall | 90000.00 |
| 45 | C009 | "Sunset Veranda" | AvgTicket | 7.25 |
| 46 | C010 | "BookNook Coffee" | Area_sqft | 950.00 |
| 47 | C010 | "BookNook Coffee" | NumStores | 6.00 |
| 48 | C010 | "BookNook Coffee" | ParkingCap | 18.00 |
| 49 | C010 | "BookNook Coffee" | AnnualFootfall | 32000.00 |
| 50 | C010 | "BookNook Coffee" | AvgTicket | 3.30 |
| 51 | C011 | "Cycle & Sip" | Area_sqft | 1000.00 |
| 52 | C011 | "Cycle & Sip" | NumStores | 6.00 |
| 53 | C011 | "Cycle & Sip" | ParkingCap | 25.00 |
| 54 | C011 | "Cycle & Sip" | AnnualFootfall | 40000.00 |
| 55 | C011 | "Cycle & Sip" | AvgTicket | 3.00 |
| 56 | C012 | "Lakeside Lounge" | Area_sqft | 2200.00 |
| 57 | C012 | "Lakeside Lounge" | NumStores | 11.00 |
| 58 | C012 | "Lakeside Lounge" | ParkingCap | 90.00 |
| 59 | C012 | "Lakeside Lounge" | AnnualFootfall | 130000.00 |
| 60 | C012 | "Lakeside Lounge" | AvgTicket | 6.50 |
| 61 | C013 | "Minimal Mug" | Area_sqft | 700.00 |
| 62 | C013 | "Minimal Mug" | NumStores | 4.00 |
| 63 | C013 | "Minimal Mug" | ParkingCap | 10.00 |
| 64 | C013 | "Minimal Mug" | AnnualFootfall | 20000.00 |
| 65 | C013 | "Minimal Mug" | AvgTicket | 4.10 |
| 66 | C014 | "Canvas Cafe" | Area_sqft | 1400.00 |
| 67 | C014 | "Canvas Cafe" | NumStores | 9.00 |
| 68 | C014 | "Canvas Cafe" | ParkingCap | 45.00 |
| 69 | C014 | "Canvas Cafe" | AnnualFootfall | 70000.00 |
| 70 | C014 | "Canvas Cafe" | AvgTicket | 5.50 |
| 71 | C015 | "Late Night Latte" | Area_sqft | 1300.00 |
| 72 | C015 | "Late Night Latte" | NumStores | 7.00 |
| 73 | C015 | "Late Night Latte" | ParkingCap | 35.00 |
| 74 | C015 | "Late Night Latte" | AnnualFootfall | 60000.00 |
| 75 | C015 | "Late Night Latte" | AvgTicket | 4.90 |
| 76 | C016 | "Bengaluru Brew Yard" | Area_sqft | 2500.00 |
| 77 | C016 | "Bengaluru Brew Yard" | NumStores | 14.00 |
| 78 | C016 | "Bengaluru Brew Yard" | ParkingCap | 100.00 |
| 79 | C016 | "Bengaluru Brew Yard" | AnnualFootfall | 180000.00 |
| 80 | C016 | "Bengaluru Brew Yard" | AvgTicket | 8.00 |
| 81 | C017 | "TownSquare Cafe" | Area_sqft | 1700.00 |
| 82 | C017 | "TownSquare Cafe" | NumStores | 10.00 |
| 83 | C017 | "TownSquare Cafe" | ParkingCap | 70.00 |
| 84 | C017 | "TownSquare Cafe" | AnnualFootfall | 100000.00 |
| 85 | C017 | "TownSquare Cafe" | AvgTicket | 4.25 |
| 86 | C018 | "Zenith Coffee Loft" | Area_sqft | 900.00 |
| 87 | C018 | "Zenith Coffee Loft" | NumStores | 5.00 |
| 88 | C018 | "Zenith Coffee Loft" | ParkingCap | 20.00 |
| 89 | C018 | "Zenith Coffee Loft" | AnnualFootfall | 29000.00 |
| 90 | C018 | "Zenith Coffee Loft" | AvgTicket | 5.75 |
| 91 | C019 | "Seaside (concept)" | Area_sqft | 2100.00 |
| 92 | C019 | "Seaside (concept)" | NumStores | 13.00 |
| 93 | C019 | "Seaside (concept)" | ParkingCap | 85.00 |
| 94 | C019 | "Seaside (concept)" | AnnualFootfall | 140000.00 |
| 95 | C019 | "Seaside (concept)" | AvgTicket | 7.00 |
| 96 | C020 | "Beanstalk" | Area_sqft | 3500.00 |
| 97 | C020 | "Beanstalk" | NumStores | 25.00 |
| 98 | C020 | "Beanstalk" | ParkingCap | 200.00 |
| 99 | C020 | "Beanstalk" | AnnualFootfall | 300000.00 |
| 100 | C020 | "Beanstalk" | AvgTicket | 3.95 |
| 101 | C021 | "Monsoon Mornings" | Area_sqft | 1600.00 |
| 102 | C021 | "Monsoon Mornings" | NumStores | 9.00 |
| 103 | C021 | "Monsoon Mornings" | ParkingCap | 50.00 |
| 104 | C021 | "Monsoon Mornings" | AnnualFootfall | 76000.00 |
| 105 | C021 | "Monsoon Mornings" | AvgTicket | 4.60 |
| 106 | C022 | "Echo Coffee Lab" | Area_sqft | 800.00 |
| 107 | C022 | "Echo Coffee Lab" | NumStores | 4.00 |
| 108 | C022 | "Echo Coffee Lab" | ParkingCap | 12.00 |
| 109 | C022 | "Echo Coffee Lab" | AnnualFootfall | 21000.00 |
| 110 | C022 | "Echo Coffee Lab" | AvgTicket | 5.10 |
4. PROC TABULATE - multi-dimensional summary by Type
proc tabulate data=work.cafes_bengaluru format=8.0;
class Type;
var Area_sqft NumStores ParkingCap AnnualFootfall AvgTicket;
table
Type,
(n='Count' Area_sqft='Area (sqft)'*mean='Mean' Area_sqft*min='Min' Area_sqft*max='Max')
/ rts=20 box='Summary by Type';
keylabel n='N';
format Type $typefmt.;
title "Tabulate: Area summary by Type";
run;
OUTPUT:
| Summary by Type | Count | Area (sqft) | Area_sqft | Area_sqft |
|---|---|---|---|---|
| Mean | Min | Max | ||
| Type | 1 | 1000 | 1000 | 1000 |
| Active / Sports | ||||
| Artsy / Gallery | 1 | 1400 | 1400 | 1400 |
| Boutique / Specialty | 3 | 867 | 800 | 900 |
| Chain | 1 | 3500 | 3500 | 3500 |
| Concept | 1 | 2100 | 2100 | 2100 |
| Garden / Outdoor | 2 | 1700 | 1600 | 1800 |
| Heritage / Traditional | 1 | 1500 | 1500 | 1500 |
| Industrial / Brewyard | 1 | 2500 | 2500 | 2500 |
| Large / Mall-like | 1 | 3000 | 3000 | 3000 |
| Minimalist | 2 | 750 | 700 | 800 |
| Neighborhood Cafe | 2 | 1450 | 1200 | 1700 |
| Niche / Theme | 1 | 950 | 950 | 950 |
| Night / 24hr | 1 | 1300 | 1300 | 1300 |
| Waterfront / Riverside | 2 | 2100 | 2000 | 2200 |
| Rooftop / Scenic | 1 | 1600 | 1600 | 1600 |
| Transit / Station | 1 | 1100 | 1100 | 1100 |
5. PROC SGPLOT - Charts
5a. Vertical bar: average AnnualFootfall by Type
proc sgplot data=work.cafes_bengaluru;
format Type $typefmt.;
vbar Type / response=AnnualFootfall stat=mean datalabel;
yaxis label="Avg Annual Footfall (mean)";
xaxis display=(nolabel);
title "Average Annual Footfall by CafƩ Type";
run;
OUTPUT:
5b. Scatter: AvgTicket vs AnnualFootfall, marker size by ParkingCap
data work.cafes_bengaluru_scaled;
set work.cafes_bengaluru;
MarkerSize = ParkingCap / 50; /* adjust denominator to fit visually */
run;
LOG:
proc sgplot data=work.cafes_bengaluru_scaled;
bubble x=AvgTicket y=AnnualFootfall size=MarkerSize /
datalabel=CafeName
fillattrs=(color=lightblue)
transparency=0.1;
xaxis label="Average Ticket (USD)";
yaxis label="Annual Footfall";
title "Average Ticket vs Annual Footfall (Bubble Size Based on Parking Capacity)";
run;
OUTPUT:
6. PROC SQL aggregations
proc sql;
create table work.type_aggregates as
select Type,
count(*) as NumPlaces,
mean(Area_sqft) as AvgArea format=8.2,
sum(NumStores) as TotalStores,
mean(AnnualFootfall) as AvgFootfall format=12.0,
max(AvgTicket) as MaxAvgTicket format=8.2
from work.cafes_bengaluru
group by Type
order by AvgFootfall desc;
quit;
proc print data=work.type_aggregates;
title "Type-level aggregates (SQL)";
run;
OUTPUT:
| Obs | Type | NumPlaces | AvgArea | TotalStores | AvgFootfall | MaxAvgTicket |
|---|---|---|---|---|---|---|
| 1 | Chain | 1 | 3500.00 | 25 | 300000 | 3.95 |
| 2 | MallLike | 1 | 3000.00 | 20 | 220000 | 4.75 |
| 3 | Industrial | 1 | 2500.00 | 14 | 180000 | 8.00 |
| 4 | Concept | 1 | 2100.00 | 13 | 140000 | 7.00 |
| 5 | Riverside | 2 | 2100.00 | 23 | 125000 | 6.50 |
| 6 | Rooftop | 1 | 1600.00 | 8 | 90000 | 7.25 |
| 7 | Heritage | 1 | 1500.00 | 10 | 80000 | 2.80 |
| 8 | Neighborhood | 2 | 1450.00 | 18 | 75000 | 4.25 |
| 9 | Garden | 2 | 1700.00 | 18 | 70500 | 6.00 |
| 10 | Artsy | 1 | 1400.00 | 9 | 70000 | 5.50 |
| 11 | Night | 1 | 1300.00 | 7 | 60000 | 4.90 |
| 12 | Transit | 1 | 1100.00 | 7 | 42000 | 2.50 |
| 13 | Active | 1 | 1000.00 | 6 | 40000 | 3.00 |
| 14 | Niche | 1 | 950.00 | 6 | 32000 | 3.30 |
| 15 | Boutique | 3 | 866.67 | 16 | 30667 | 5.75 |
| 16 | Minimalist | 2 | 750.00 | 8 | 20500 | 5.10 |
Comments
Post a Comment