Saturday, 31 May 2025

196.ANALYSIS OF INDIAN MANGO VARIETIES USING PROC PRINT | PROC MEANS | PROC FREQ | PROC SQL | PROC SORT | PROC REPORT | MACROS IN SAS | DATA MANAGEMENT INSIGHTS | CHARACTER LENGTH HANDLING

ANALYSIS OF INDIAN MANGO VARIETIES USING PROC PRINT | PROC MEANS | PROC FREQ | PROC SQL | PROC SORT | PROC REPORT | MACROS IN SAS | DATA MANAGEMENT INSIGHTS | CHARACTER LENGTH HANDLING

/*A unique dataset project on different types of mangoes*/

Step 1: Create Mangoes Dataset

data mango_varieties;

    length MangoName $20 OriginState $15 HarvestSeason $10 SweetnessLevel $10;

    input MangoName $ OriginState $ HarvestSeason $ AvgWeight_grams SweetnessLevel $ 

          PricePerKg Rating;

    datalines;

Alphonso       Maharashtra   Summer   300   VeryHigh   300  9.5

Dasheri        UttarPradesh  Summer   250   High       150  8.8

Langra         Bihar         Summer   280   High       140  8.6

Banganapalli   AndhraPradesh Summer   350   Medium     120  8.2

Kesar          Gujarat       Summer   260   VeryHigh   250  9.2

Himsagar       WestBengal    Summer   240   High       180  8.9

Totapuri       Karnataka     Summer   400   Low        100  7.5

Neelum         TamilNadu     Summer   220   Medium     130  7.9

Malda          Bihar         Summer   310   High       160  8.7

Raspuri        Karnataka     Summer   270   Medium     140  8.3

Chausa         UttarPradesh  Summer   290   High       155  8.4

Badami         Karnataka     Summer   300   Medium     135  8.1

Mankurad       Goa           Summer   320   High       270  9.0

Mallika        PanIndia      Summer   350   VeryHigh   240  9.1

Sindhura       TamilNadu     Summer   280   Medium     125  7.8

Suvernarekha   AndhraPradesh Summer   260   Medium     110  7.6

Zardalu        Bihar         Summer   230   High       150  8.0

ImamPasand     TamilNadu     Summer   330   VeryHigh   280  9.3

Rajapuri       Gujarat       Summer   370   Low        90   7.2

Amrapali       PanIndia      Summer   270   Medium     145  8.5

;

run;

proc print;run;

Output:

Obs MangoName OriginState HarvestSeason SweetnessLevel AvgWeight_grams PricePerKg Rating
1 Alphonso Maharashtra Summer VeryHigh 300 300 9.5
2 Dasheri UttarPradesh Summer High 250 150 8.8
3 Langra Bihar Summer High 280 140 8.6
4 Banganapalli AndhraPradesh Summer Medium 350 120 8.2
5 Kesar Gujarat Summer VeryHigh 260 250 9.2
6 Himsagar WestBengal Summer High 240 180 8.9
7 Totapuri Karnataka Summer Low 400 100 7.5
8 Neelum TamilNadu Summer Medium 220 130 7.9
9 Malda Bihar Summer High 310 160 8.7
10 Raspuri Karnataka Summer Medium 270 140 8.3
11 Chausa UttarPradesh Summer High 290 155 8.4
12 Badami Karnataka Summer Medium 300 135 8.1
13 Mankurad Goa Summer High 320 270 9.0
14 Mallika PanIndia Summer VeryHigh 350 240 9.1
15 Sindhura TamilNadu Summer Medium 280 125 7.8
16 Suvernarekha AndhraPradesh Summer Medium 260 110 7.6
17 Zardalu Bihar Summer High 230 150 8.0
18 ImamPasand TamilNadu Summer VeryHigh 330 280 9.3
19 Rajapuri Gujarat Summer Low 370 90 7.2
20 Amrapali PanIndia Summer Medium 270 145 8.5

Step 2: View and Explore the Dataset

proc print data=mango_varieties;

    title "List of Indian Mango Varieties";

run;

Output:

List of Indian Mango Varieties

Obs MangoName OriginState HarvestSeason SweetnessLevel AvgWeight_grams PricePerKg Rating
1 Alphonso Maharashtra Summer VeryHigh 300 300 9.5
2 Dasheri UttarPradesh Summer High 250 150 8.8
3 Langra Bihar Summer High 280 140 8.6
4 Banganapalli AndhraPradesh Summer Medium 350 120 8.2
5 Kesar Gujarat Summer VeryHigh 260 250 9.2
6 Himsagar WestBengal Summer High 240 180 8.9
7 Totapuri Karnataka Summer Low 400 100 7.5
8 Neelum TamilNadu Summer Medium 220 130 7.9
9 Malda Bihar Summer High 310 160 8.7
10 Raspuri Karnataka Summer Medium 270 140 8.3
11 Chausa UttarPradesh Summer High 290 155 8.4
12 Badami Karnataka Summer Medium 300 135 8.1
13 Mankurad Goa Summer High 320 270 9.0
14 Mallika PanIndia Summer VeryHigh 350 240 9.1
15 Sindhura TamilNadu Summer Medium 280 125 7.8
16 Suvernarekha AndhraPradesh Summer Medium 260 110 7.6
17 Zardalu Bihar Summer High 230 150 8.0
18 ImamPasand TamilNadu Summer VeryHigh 330 280 9.3
19 Rajapuri Gujarat Summer Low 370 90 7.2
20 Amrapali PanIndia Summer Medium 270 145 8.5


proc contents data=mango_varieties;

run;

Output:

The CONTENTS Procedure

Data Set Name WORK.MANGO_VARIETIES Observations 20
Member Type DATA Variables 7
Engine V9 Indexes 0
Created 14/09/2015 00:03:34 Observation Length 80
Last Modified 14/09/2015 00:03:34 Deleted Observations 0
Protection   Compressed NO
Data Set Type   Sorted NO
Label      
Data Representation WINDOWS_64    
Encoding wlatin1 Western (Windows)    


Engine/Host Dependent Information
Data Set Page Size 65536
Number of Data Set Pages 1
First Data Page 1
Max Obs per Page 817
Obs in First Data Page 20
Number of Data Set Repairs 0
ExtendObsCounter YES
Filename C:\Users\Lenovo\AppData\Local\Temp\SAS Temporary Files\_TD8000_DESKTOP-QFAA4KV_\mango_varieties.sas7bdat
Release Created 9.0401M2
Host Created X64_8HOME


Alphabetic List of Variables and Attributes
# Variable Type Len
5 AvgWeight_grams Num 8
3 HarvestSeason Char 10
1 MangoName Char 20
2 OriginState Char 15
6 PricePerKg Num 8
7 Rating Num 8
4 SweetnessLevel Char 10


Step 3: Summary Statistics Using PROC MEANS

proc means data=mango_varieties mean median maxdec=2;

    var AvgWeight_grams PricePerKg Rating;

    title "Summary Statistics for Weight, Price, and Rating";

run;

Output:

Summary Statistics for Weight, Price, and Rating

The MEANS Procedure

Variable Mean Median
AvgWeight_grams
PricePerKg
Rating
294.00
168.50
8.43
285.00
147.50
8.45


Step 4: Frequency Analysis Using PROC FREQ

proc freq data=mango_varieties;

    tables OriginState SweetnessLevel;

    title "Frequency of Mango Origin States and Sweetness Levels";

run;

Output:

Frequency of Mango Origin States and Sweetness Levels

The FREQ Procedure

OriginState Frequency Percent Cumulative
Frequency
Cumulative
Percent
AndhraPradesh 2 10.00 2 10.00
Bihar 3 15.00 5 25.00
Goa 1 5.00 6 30.00
Gujarat 2 10.00 8 40.00
Karnataka 3 15.00 11 55.00
Maharashtra 1 5.00 12 60.00
PanIndia 2 10.00 14 70.00
TamilNadu 3 15.00 17 85.00
UttarPradesh 2 10.00 19 95.00
WestBengal 1 5.00 20 100.00


SweetnessLevel Frequency Percent Cumulative
Frequency
Cumulative
Percent
High 7 35.00 7 35.00
Low 2 10.00 9 45.00
Medium 7 35.00 16 80.00
VeryHigh 4 20.00 20 100.00


Step 5: Sorting Data by Rating and Price

proc sort data=mango_varieties out=sorted_mangoes;

    by descending Rating descending PricePerKg;

run;

proc print data=sorted_mangoes;

    title "Mangoes Sorted by Rating and Price";

run;

Output:

Mangoes Sorted by Rating and Price

Obs MangoName OriginState HarvestSeason SweetnessLevel AvgWeight_grams PricePerKg Rating
1 Alphonso Maharashtra Summer VeryHigh 300 300 9.5
2 ImamPasand TamilNadu Summer VeryHigh 330 280 9.3
3 Kesar Gujarat Summer VeryHigh 260 250 9.2
4 Mallika PanIndia Summer VeryHigh 350 240 9.1
5 Mankurad Goa Summer High 320 270 9.0
6 Himsagar WestBengal Summer High 240 180 8.9
7 Dasheri UttarPradesh Summer High 250 150 8.8
8 Malda Bihar Summer High 310 160 8.7
9 Langra Bihar Summer High 280 140 8.6
10 Amrapali PanIndia Summer Medium 270 145 8.5
11 Chausa UttarPradesh Summer High 290 155 8.4
12 Raspuri Karnataka Summer Medium 270 140 8.3
13 Banganapalli AndhraPradesh Summer Medium 350 120 8.2
14 Badami Karnataka Summer Medium 300 135 8.1
15 Zardalu Bihar Summer High 230 150 8.0
16 Neelum TamilNadu Summer Medium 220 130 7.9
17 Sindhura TamilNadu Summer Medium 280 125 7.8
18 Suvernarekha AndhraPradesh Summer Medium 260 110 7.6
19 Totapuri Karnataka Summer Low 400 100 7.5
20 Rajapuri Gujarat Summer Low 370 90 7.2


Step 6: Grouping with PROC SQL

proc sql;

    select OriginState, 

           count(*) as MangoCount,

           avg(PricePerKg) as AvgPrice format=8.2,

           avg(Rating) as AvgRating format=4.2

    from mango_varieties

    group by OriginState;

quit;

Output:

OriginState MangoCount AvgPrice AvgRating
AndhraPradesh 2 115.00 7.90
Bihar 3 150.00 8.43
Goa 1 270.00 9.00
Gujarat 2 170.00 8.20
Karnataka 3 125.00 7.97
Maharashtra 1 300.00 9.50
PanIndia 2 192.50 8.80
TamilNadu 3 178.33 8.33
UttarPradesh 2 152.50 8.60
WestBengal 1 180.00 8.90


Step 7: Create a Macro for Regional Mango Analysis

%macro region_analysis(state);

    proc sql;

        select MangoName, PricePerKg, Rating

        from mango_varieties

        where OriginState="&state"

        order by Rating desc;

    quit;

%mend;


%region_analysis(Karnataka);

Output:

MangoName PricePerKg Rating
Raspuri 140 8.3
Badami 135 8.1
Totapuri 100 7.5


%region_analysis(TamilNadu);

Output:

MangoName PricePerKg Rating
ImamPasand 280 9.3
Neelum 130 7.9
Sindhura 125 7.8


%region_analysis(Bihar);

Output:

MangoName PricePerKg Rating
Malda 160 8.7
Langra 140 8.6
Zardalu 150 8


Step 8: Custom Report Using PROC REPORT

proc report data=mango_varieties nowd;

    column MangoName OriginState AvgWeight_grams PricePerKg Rating;

    define MangoName / display "Mango Variety";

    define OriginState / group "State";

    define AvgWeight_grams / analysis mean "Avg Weight (g)";

    define PricePerKg / analysis mean "Price (INR/Kg)";

    define Rating / analysis mean "Avg Rating";

    title "Custom Report of Mango Varieties by State";

run;

Output:

Custom Report of Mango Varieties by State

Mango Variety State Avg Weight (g) Price (INR
Kg)
Avg Rating
Banganapalli AndhraPradesh 350 120 8.2
Suvernarekha   260 110 7.6
Langra Bihar 280 140 8.6
Malda   310 160 8.7
Zardalu   230 150 8
Mankurad Goa 320 270 9
Kesar Gujarat 260 250 9.2
Rajapuri   370 90 7.2
Totapuri Karnataka 400 100 7.5
Raspuri   270 140 8.3
Badami   300 135 8.1
Alphonso Maharashtra 300 300 9.5
Mallika PanIndia 350 240 9.1
Amrapali   270 145 8.5
Neelum TamilNadu 220 130 7.9
Sindhura   280 125 7.8
ImamPasand   330 280 9.3
Dasheri UttarPradesh 250 150 8.8
Chausa   290 155 8.4
Himsagar WestBengal 240 180 8.9


Step 9: Create a New Variable - Price Category

data mango_price_category;

    set mango_varieties;

    length PriceCategory $10.;

    if PricePerKg >= 250 then PriceCategory = "Premium";

    else if PricePerKg >= 150 then PriceCategory = "MidRange";

    else PriceCategory = "Budget";

run;

proc print;run;

Output:

Obs MangoName OriginState HarvestSeason SweetnessLevel AvgWeight_grams PricePerKg Rating PriceCategory
1 Alphonso Maharashtra Summer VeryHigh 300 300 9.5 Premium
2 Dasheri UttarPradesh Summer High 250 150 8.8 MidRange
3 Langra Bihar Summer High 280 140 8.6 Budget
4 Banganapalli AndhraPradesh Summer Medium 350 120 8.2 Budget
5 Kesar Gujarat Summer VeryHigh 260 250 9.2 Premium
6 Himsagar WestBengal Summer High 240 180 8.9 MidRange
7 Totapuri Karnataka Summer Low 400 100 7.5 Budget
8 Neelum TamilNadu Summer Medium 220 130 7.9 Budget
9 Malda Bihar Summer High 310 160 8.7 MidRange
10 Raspuri Karnataka Summer Medium 270 140 8.3 Budget
11 Chausa UttarPradesh Summer High 290 155 8.4 MidRange
12 Badami Karnataka Summer Medium 300 135 8.1 Budget
13 Mankurad Goa Summer High 320 270 9.0 Premium
14 Mallika PanIndia Summer VeryHigh 350 240 9.1 MidRange
15 Sindhura TamilNadu Summer Medium 280 125 7.8 Budget
16 Suvernarekha AndhraPradesh Summer Medium 260 110 7.6 Budget
17 Zardalu Bihar Summer High 230 150 8.0 MidRange
18 ImamPasand TamilNadu Summer VeryHigh 330 280 9.3 Premium
19 Rajapuri Gujarat Summer Low 370 90 7.2 Budget
20 Amrapali PanIndia Summer Medium 270 145 8.5 Budget


proc freq data=mango_price_category;

    tables PriceCategory;

    title "Frequency of Mangoes by Price Category";

run;

Output:

Frequency of Mangoes by Price Category

The FREQ Procedure

PriceCategory Frequency Percent Cumulative
Frequency
Cumulative
Percent
Budget 10 50.00 10 50.00
MidRange 6 30.00 16 80.00
Premium 4 20.00 20 100.00


Step 10: Macro to Compare Any Two Mango Varieties

%macro compare_mango(mango1, mango2);

    proc sql;

        select MangoName, OriginState, AvgWeight_grams, PricePerKg, Rating

        from mango_varieties

        where MangoName in ("&mango1", "&mango2");

    quit;

%mend;


%compare_mango(Alphonso, Kesar);

Output:

 
MangoNameOriginStateAvgWeight_gramsPricePerKgRating
AlphonsoMaharashtra3003009.5
KesarGujarat2602509.2


%compare_mango(Langra, Dasheri);

Output:

MangoName OriginState AvgWeight_grams PricePerKg Rating
Dasheri UttarPradesh 250 150 8.8
Langra Bihar 280 140 8.6


Step 11: Filter and Export Selected Data

data high_rated_mangoes;

    set mango_varieties;

    if Rating >= 9.0;

run;


proc print data=high_rated_mangoes;

    title "Mangoes with Rating 9.0 and Above";

run;

Output:

Mangoes with Rating 9.0 and Above

Obs MangoName OriginState HarvestSeason SweetnessLevel AvgWeight_grams PricePerKg Rating
1 Alphonso Maharashtra Summer VeryHigh 300 300 9.5
2 Kesar Gujarat Summer VeryHigh 260 250 9.2
3 Mankurad Goa Summer High 320 270 9.0
4 Mallika PanIndia Summer VeryHigh 350 240 9.1
5 ImamPasand TamilNadu Summer VeryHigh 330 280 9.3


proc export data=high_rated_mangoes

    outfile="HighRatedMangoes.csv"

    dbms=csv replace;

run;

Log:
NOTE: The file 'HighRatedMangoes.csv' is:
      Filename=C:\sas folder\SASFoundation\9.4\HighRatedMangoes.csv,
      RECFM=V,LRECL=32767,File Size (bytes)=0,
      Last Modified=31 May 2025 17:35:14,
      Create Time=31 May 2025 17:35:14

NOTE: 6 records were written to the file 'HighRatedMangoes.csv'.
      The minimum record length was 34.
      The maximum record length was 84.
NOTE: There were 5 observations read from the data set WORK.HIGH_RATED_MANGOES.
NOTE: DATA statement used (Total process time):
      real time           0.12 seconds
      cpu time            0.04 seconds


5 records created in HighRatedMangoes.csv from HIGH_RATED_MANGOES.


NOTE: "HighRatedMangoes.csv" file was successfully created.
NOTE: PROCEDURE EXPORT used (Total process time):
      real time           2.31 seconds
      cpu time            0.29 seconds


To Visit My Previous Toys Datasets:Click Here
To Visit My Previous BirdSpecies Dataset:Click Here



PRACTICE AND COMMENT YOUR OUTPUT: 

--->PLEASE FOLLOW OUR BLOG FOR MORE UPDATES.

PLEASE FOLLOW OUR TELEGRAM CHANNEL CLICK HERE

PLEASE FOLLOW OUR FACEBOOK PAGE  CLICK HERE

PLEASE FOLLOW OUR INSTAGRAM PAGE CLICK HERE

Friday, 30 May 2025

195.INDIAN CUISINES DATA ANALYSIS USING DATA STEP | LENGTH | PROC PRINT | PROC SORT | PROC FREQ | PROC MEANS | PROC SQL | PROC UNIVARIATE | MACROS | DERIVED VARIABLES | EXPORT IN SAS FOR CULINARY INSIGHTS

INDIAN CUISINES DATA ANALYSIS USING DATA STEP | LENGTH | PROC PRINT | PROC SORT | PROC FREQ | PROC MEANS | PROC SQL | PROC UNIVARIATE | MACROS | DERIVED VARIABLES | EXPORT IN SAS FOR CULINARY INSIGHTS

/*Creating A unique dataset on different types of Indian cuisines.*/

Step 1: Creating the Dataset – Indian Cuisines

A dataset called Indian_Cuisines using DATALINES in SAS. It includes:

Cuisine_ID: Unique identifier

Cuisine_Name: Name of the cuisine

Region: Region of origin

Spice_Level: Low, Medium, High

Main_Ingredient: Primary ingredient

Veg_NonVeg: Type of dish

Popularity_Score: Numeric rating from 1 to 10

Preparation_Time: Time in minutes


data Indian_Cuisines;

    length Cuisine_Name $20 Region $15 Spice_Level $10 

           Main_Ingredient $15 Veg_NonVeg $10;

    input Cuisine_ID Cuisine_Name $ Region $ Spice_Level $ 

          Main_Ingredient $ Veg_NonVeg $ Popularity_Score Preparation_Time;

    datalines;

1 Biryani South High Rice NonVeg 9 60

2 ButterChicken North Medium Chicken NonVeg 8 50

3 Dosa South Medium Rice Veg 7 30

4 RoganJosh North High Lamb NonVeg 8 55

5 Pakhala East Low Rice Veg 6 20

6 LittiChokha East Medium Wheat Veg 7 35

7 Idli South Low Rice Veg 8 25

8 PavBhaji West Medium MixedVeg Veg 9 40

9 Poha West Low Rice Veg 7 15

10 CholeBhature North Medium Chickpeas Veg 9 45

11 HyderabadiHaleem South High Meat NonVeg 8 70

12 Sambhar South Medium Lentils Veg 8 35

13 DalTadka North Low Lentils Veg 7 30

14 MacherJhol East Medium Fish NonVeg 6 40

15 Vindaloo West High Pork NonVeg 7 50

16 RajmaChawal North Medium KidneyBeans Veg 8 35

17 FishCurry East High Fish NonVeg 7 45

18 Khandvi West Low Gramflour Veg 6 20

19 AlooParatha North Medium Potato Veg 8 30

20 Khichdi PanIndia Low Lentils Veg 9 25

;

run;

proc print;run;

Output:

Obs Cuisine_Name Region Spice_Level Main_Ingredient Veg_NonVeg Cuisine_ID Popularity_Score Preparation_Time
1 Biryani South High Rice NonVeg 1 9 60
2 ButterChicken North Medium Chicken NonVeg 2 8 50
3 Dosa South Medium Rice Veg 3 7 30
4 RoganJosh North High Lamb NonVeg 4 8 55
5 Pakhala East Low Rice Veg 5 6 20
6 LittiChokha East Medium Wheat Veg 6 7 35
7 Idli South Low Rice Veg 7 8 25
8 PavBhaji West Medium MixedVeg Veg 8 9 40
9 Poha West Low Rice Veg 9 7 15
10 CholeBhature North Medium Chickpeas Veg 10 9 45
11 HyderabadiHaleem South High Meat NonVeg 11 8 70
12 Sambhar South Medium Lentils Veg 12 8 35
13 DalTadka North Low Lentils Veg 13 7 30
14 MacherJhol East Medium Fish NonVeg 14 6 40
15 Vindaloo West High Pork NonVeg 15 7 50
16 RajmaChawal North Medium KidneyBeans Veg 16 8 35
17 FishCurry East High Fish NonVeg 17 7 45
18 Khandvi West Low Gramflour Veg 18 6 20
19 AlooParatha North Medium Potato Veg 19 8 30
20 Khichdi PanIndia Low Lentils Veg 20 9 25

Step 2: Using Basic PROC Steps

a) PROC PRINT

proc print data=Indian_Cuisines;

    title "All Indian Cuisines";

run;

Output:

All Indian Cuisines

Obs Cuisine_Name Region Spice_Level Main_Ingredient Veg_NonVeg Cuisine_ID Popularity_Score Preparation_Time
1 Biryani South High Rice NonVeg 1 9 60
2 ButterChicken North Medium Chicken NonVeg 2 8 50
3 Dosa South Medium Rice Veg 3 7 30
4 RoganJosh North High Lamb NonVeg 4 8 55
5 Pakhala East Low Rice Veg 5 6 20
6 LittiChokha East Medium Wheat Veg 6 7 35
7 Idli South Low Rice Veg 7 8 25
8 PavBhaji West Medium MixedVeg Veg 8 9 40
9 Poha West Low Rice Veg 9 7 15
10 CholeBhature North Medium Chickpeas Veg 10 9 45
11 HyderabadiHaleem South High Meat NonVeg 11 8 70
12 Sambhar South Medium Lentils Veg 12 8 35
13 DalTadka North Low Lentils Veg 13 7 30
14 MacherJhol East Medium Fish NonVeg 14 6 40
15 Vindaloo West High Pork NonVeg 15 7 50
16 RajmaChawal North Medium KidneyBeans Veg 16 8 35
17 FishCurry East High Fish NonVeg 17 7 45
18 Khandvi West Low Gramflour Veg 18 6 20
19 AlooParatha North Medium Potato Veg 19 8 30
20 Khichdi PanIndia Low Lentils Veg 20 9 25

b) PROC SORT – Sort by Region and Spice Level

proc sort data=Indian_Cuisines out=Sorted_Cuisines;

    by Region Spice_Level;

run;

proc print;run;

Output:

Obs Cuisine_Name Region Spice_Level Main_Ingredient Veg_NonVeg Cuisine_ID Popularity_Score Preparation_Time
1 FishCurry East High Fish NonVeg 17 7 45
2 Pakhala East Low Rice Veg 5 6 20
3 LittiChokha East Medium Wheat Veg 6 7 35
4 MacherJhol East Medium Fish NonVeg 14 6 40
5 RoganJosh North High Lamb NonVeg 4 8 55
6 DalTadka North Low Lentils Veg 13 7 30
7 ButterChicken North Medium Chicken NonVeg 2 8 50
8 CholeBhature North Medium Chickpeas Veg 10 9 45
9 RajmaChawal North Medium KidneyBeans Veg 16 8 35
10 AlooParatha North Medium Potato Veg 19 8 30
11 Khichdi PanIndia Low Lentils Veg 20 9 25
12 Biryani South High Rice NonVeg 1 9 60
13 HyderabadiHaleem South High Meat NonVeg 11 8 70
14 Idli South Low Rice Veg 7 8 25
15 Dosa South Medium Rice Veg 3 7 30
16 Sambhar South Medium Lentils Veg 12 8 35
17 Vindaloo West High Pork NonVeg 15 7 50
18 Poha West Low Rice Veg 9 7 15
19 Khandvi West Low Gramflour Veg 18 6 20
20 PavBhaji West Medium MixedVeg Veg 8 9 40

c) PROC FREQ – Frequency of Spice Levels

proc freq data=Indian_Cuisines;

    tables Spice_Level;

    title "Frequency of Spice Levels";

run;

Output:

Frequency of Spice Levels

The FREQ Procedure

Spice_Level Frequency Percent Cumulative
Frequency
Cumulative
Percent
High 5 25.00 5 25.00
Low 6 30.00 11 55.00
Medium 9 45.00 20 100.00

d) PROC MEANS – Average Preparation Time by Veg/Non-Veg

proc means data=Indian_Cuisines noprint;

    class Veg_NonVeg;

    var Preparation_Time;

    output out=PrepTimeAvg mean=Avg_Prep_Time;

run;

proc print data=PrepTimeAvg;

    title "Average Preparation Time by Veg/Non-Veg";

run;

Output:

Average Preparation Time by Veg/Non-Veg

Obs Veg_NonVeg _TYPE_ _FREQ_ Avg_Prep_Time
1   0 20 37.7500
2 NonVeg 1 7 52.8571
3 Veg 1 13 29.6154

Step 3: Using PROC SQL

a) Find Top 5 Most Popular Dishes

proc sql outobs=5;

    select Cuisine_Name, Popularity_Score

    from Indian_Cuisines

    order by Popularity_Score desc;

quit;

Output:

Cuisine_Name Popularity_Score
PavBhaji 9
Khichdi 9
Biryani 9
CholeBhature 9
Idli 8

b) Count of Veg and Non-Veg Items

proc sql;

    select Veg_NonVeg, count(*) as Count

    from Indian_Cuisines

    group by Veg_NonVeg;

quit;

Output:

Veg_NonVeg Count
NonVeg 7
Veg 13

c) Average Popularity Score per Region

proc sql;

    select Region, avg(Popularity_Score) as Avg_Score format=4.2

    from Indian_Cuisines

    group by Region;

quit;

Output:

Region Avg_Score
East 6.50
North 8.00
PanIndia 9.00
South 8.00
West 7.25

Step 4: Advanced Use with Macros

Task: Create summary reports per Region using a Macro

%macro Region_Report(region);

    proc print data=Indian_Cuisines;

        where Region = "&region";

        title "Cuisine Report for Region: &region";

    run;


    proc means data=Indian_Cuisines;

        where Region = "&region";

        var Popularity_Score Preparation_Time;

        title "Average Popularity and Preparation Time for &region";

    run;

%mend;

%Region_Report(North);

Output:

Cuisine Report for Region: North

Obs Cuisine_Name Region Spice_Level Main_Ingredient Veg_NonVeg Cuisine_ID Popularity_Score Preparation_Time
2 ButterChicken North Medium Chicken NonVeg 2 8 50
4 RoganJosh North High Lamb NonVeg 4 8 55
10 CholeBhature North Medium Chickpeas Veg 10 9 45
13 DalTadka North Low Lentils Veg 13 7 30
16 RajmaChawal North Medium KidneyBeans Veg 16 8 35
19 AlooParatha North Medium Potato Veg 19 8 30

Average Popularity and Preparation Time for North

The MEANS Procedure

Variable N Mean Std Dev Minimum Maximum
Popularity_Score
Preparation_Time
6
6
8.0000000
40.8333333
0.6324555
10.6848803
7.0000000
30.0000000
9.0000000
55.0000000

%Region_Report(South);

Output:

Cuisine Report for Region: South

Obs Cuisine_Name Region Spice_Level Main_Ingredient Veg_NonVeg Cuisine_ID Popularity_Score Preparation_Time
1 Biryani South High Rice NonVeg 1 9 60
3 Dosa South Medium Rice Veg 3 7 30
7 Idli South Low Rice Veg 7 8 25
11 HyderabadiHaleem South High Meat NonVeg 11 8 70
12 Sambhar South Medium Lentils Veg 12 8 35

Average Popularity and Preparation Time for South

The MEANS Procedure

Variable N Mean Std Dev Minimum Maximum
Popularity_Score
Preparation_Time
5
5
8.0000000
44.0000000
0.7071068
19.8116128
7.0000000
25.0000000
9.0000000
70.0000000

%Region_Report(East);

Output:

Cuisine Report for Region: East

Obs Cuisine_Name Region Spice_Level Main_Ingredient Veg_NonVeg Cuisine_ID Popularity_Score Preparation_Time
5 Pakhala East Low Rice Veg 5 6 20
6 LittiChokha East Medium Wheat Veg 6 7 35
14 MacherJhol East Medium Fish NonVeg 14 6 40
17 FishCurry East High Fish NonVeg 17 7 45

Average Popularity and Preparation Time for East

The MEANS Procedure

Variable N Mean Std Dev Minimum Maximum
Popularity_Score
Preparation_Time
4
4
6.5000000
35.0000000
0.5773503
10.8012345
6.0000000
20.0000000
7.0000000
45.0000000

%Region_Report(West);

Output:

Cuisine Report for Region: West

Obs Cuisine_Name Region Spice_Level Main_Ingredient Veg_NonVeg Cuisine_ID Popularity_Score Preparation_Time
8 PavBhaji West Medium MixedVeg Veg 8 9 40
9 Poha West Low Rice Veg 9 7 15
15 Vindaloo West High Pork NonVeg 15 7 50
18 Khandvi West Low Gramflour Veg 18 6 20

Average Popularity and Preparation Time for West

The MEANS Procedure

Variable N Mean Std Dev Minimum Maximum
Popularity_Score
Preparation_Time
4
4
7.2500000
31.2500000
1.2583057
16.5201897
6.0000000
15.0000000
9.0000000
50.0000000

Step 5: Conditional Logic with Macro Parameters

Task: Filter Cuisines Based on Spice Level and Type

%macro Filter_Cuisines(spice, type);

    proc sql;

        select Cuisine_Name, Region, Main_Ingredient, Preparation_Time

        from Indian_Cuisines

        where Spice_Level="&spice" and Veg_NonVeg="&type";

    quit;

%mend;


%Filter_Cuisines(High, NonVeg);

Output:

Cuisine_Name Region Main_Ingredient Preparation_Time
Biryani South Rice 60
RoganJosh North Lamb 55
HyderabadiHaleem South Meat 70
Vindaloo West Pork 50
FishCurry East Fish 45

Step 6: Creating a Flag Variable – Fast Food (≤30 mins)

data Fast_Food;

    set Indian_Cuisines;

    if Preparation_Time <= 30 then FastFood="Yes";

    else FastFood="No";

run;


proc print data=Fast_Food;

    title "Cuisines Classified as Fast Food (<=30 mins)";

run;

Output:

Cuisines Classified as Fast Food (<=30 mins)

Obs Cuisine_Name Region Spice_Level Main_Ingredient Veg_NonVeg Cuisine_ID Popularity_Score Preparation_Time FastFood
1 Biryani South High Rice NonVeg 1 9 60 No
2 ButterChicken North Medium Chicken NonVeg 2 8 50 No
3 Dosa South Medium Rice Veg 3 7 30 Yes
4 RoganJosh North High Lamb NonVeg 4 8 55 No
5 Pakhala East Low Rice Veg 5 6 20 Yes
6 LittiChokha East Medium Wheat Veg 6 7 35 No
7 Idli South Low Rice Veg 7 8 25 Yes
8 PavBhaji West Medium MixedVeg Veg 8 9 40 No
9 Poha West Low Rice Veg 9 7 15 Yes
10 CholeBhature North Medium Chickpeas Veg 10 9 45 No
11 HyderabadiHaleem South High Meat NonVeg 11 8 70 No
12 Sambhar South Medium Lentils Veg 12 8 35 No
13 DalTadka North Low Lentils Veg 13 7 30 Yes
14 MacherJhol East Medium Fish NonVeg 14 6 40 No
15 Vindaloo West High Pork NonVeg 15 7 50 No
16 RajmaChawal North Medium KidneyBeans Veg 16 8 35 No
17 FishCurry East High Fish NonVeg 17 7 45 No
18 Khandvi West Low Gramflour Veg 18 6 20 Yes
19 AlooParatha North Medium Potato Veg 19 8 30 Yes
20 Khichdi PanIndia Low Lentils Veg 20 9 25 Yes

Step 7: Using PROC UNIVARIATE – Analyze Time Distribution

proc univariate data=Indian_Cuisines;

    var Preparation_Time;

    histogram;

    title "Preparation Time Distribution of Indian Cuisines";

run;

Output:

Preparation Time Distribution of Indian Cuisines

The UNIVARIATE Procedure
Variable: Preparation_Time

Moments
N 20 Sum Weights 20
Mean 37.75 Sum Observations 755
Std Deviation 14.3705657 Variance 206.513158
Skewness 0.50422081 Kurtosis -0.1578856
Uncorrected SS 32425 Corrected SS 3923.75
Coeff Variation 38.0677236 Std Error Mean 3.21335617

Basic Statistical Measures
Location Variability
Mean 37.75000 Std Deviation 14.37057
Median 35.00000 Variance 206.51316
Mode 30.00000 Range 55.00000
    Interquartile Range 20.00000

Note: The mode displayed is the smallest of 2 modes with a count of 3.


Tests for Location: Mu0=0
Test Statistic p Value
Student's t t 11.74784 Pr > |t| <.0001
Sign M 10 Pr >= |M| <.0001
Signed Rank S 105 Pr >= |S| <.0001

Quantiles (Definition 5)
Level Quantile
100% Max 70.0
99% 70.0
95% 65.0
90% 57.5
75% Q3 47.5
50% Median 35.0
25% Q1 27.5
10% 20.0
5% 17.5
1% 15.0
0% Min 15.0

Extreme Observations
Lowest Highest
Value Obs Value Obs
15 9 50 2
20 18 50 15
20 5 55 4
25 20 60 1
25 7 70 11

Step 8: Creating a Macro for Top N Dishes by Popularity

%macro Top_Dishes(n);

    proc sql outobs=&n;

        select Cuisine_Name, Region, Popularity_Score

        from Indian_Cuisines

        order by Popularity_Score desc;

    quit;

%mend;


%Top_Dishes(3);

Output:

Cuisine_Name Region Popularity_Score
PavBhaji West 9
Khichdi PanIndia 9
Biryani South 9

Step 9: Exporting Final Datasets

proc export data=Fast_Food

    outfile="Fast_Food_Cuisines.csv"

    dbms=csv

    replace;

run;

Log:
NOTE: "Fast_Food_Cuisines.csv" file was successfully created.
NOTE: PROCEDURE EXPORT used (Total process time):
      real time           1.21 seconds
      cpu time            0.14 seconds


Try This Blog :  SAS QUESTIONS - 2



PRACTICE AND COMMENT YOUR OUTPUT: 

--->PLEASE FOLLOW OUR BLOG FOR MORE UPDATES.

PLEASE FOLLOW OUR TELEGRAM CHANNEL CLICK HERE

PLEASE FOLLOW OUR FACEBOOK PAGE  CLICK HERE

PLEASE FOLLOW OUR INSTAGRAM PAGE CLICK HERE