Thursday, 20 November 2025

315.WORLD CUISINES DATASET CREATION AND NUTRIENT ANALYSIS USING PROC SQL | PROC FORMAT | PROC PRINT | PROC MEANS | PROC STDIZE | PROC SGPANEL WITH MACROS AND DATE FORMAT INTEGRATION

WORLD CUISINES DATASET CREATION AND NUTRIENT ANALYSIS USING PROC SQL | PROC FORMAT | PROC PRINT | PROC MEANS | PROC STDIZE | PROC SGPANEL WITH MACROS AND DATE FORMAT INTEGRATION

OPTIONS NOCENTER;

1. PROC FORMAT – custom formats for spiciness & Veg/NonVeg 

proc format;

  value spicefmt

    1 = 'Very Mild'

    2 = 'Mild'

    3 = 'Medium'

    4 = 'Spicy'

    5 = 'Very Spicy';

NOTE:

NOTE: Format SPICEFMT has been output.

  value $vegf

    'Veg'    = 'Vegetarian'

    'NonVeg' = 'Non-Vegetarian';

run;

NOTE:

NOTE: Format $VEGF has been output.

%let analysis_date = %sysfunc(today());

NOTE:

2. PROC SQL – create the WORLD_CUISINE dataset           

Includes a SAS date variable MENU_DATE with DATE9.    

proc sql;

  create table work.world_cuisine as

  select "Paneer Tikka" as Dish_Name length=30,

         "India" as Country length=20,

         280 as Calories,

         18  as Protein,

         16  as Fat,

         4   as Spiciness_Level,

         "Veg" as Veg_or_NonVeg length=7,

         "15JAN2025"d as Menu_Date format=date9.

  from sashelp.class(obs=1)

  union all

  select "Sushi",

         "Japan",

         200,

         16,

         5,

         2,

         "NonVeg",

         "10FEB2025"d

  from sashelp.class(obs=1)

  union all

  select "Tacos al Pastor",

         "Mexico",

         450,

         20,

         22,

         4,

         "NonVeg",

         "05MAR2025"d

  from sashelp.class(obs=1)

  union all

  select "Margherita Pizza",

         "Italy",

         320,

         14,

         12,

         2,

         "Veg",

         "20JAN2025"d

  from sashelp.class(obs=1)

  union all

  select "Falafel Wrap",

         "Lebanon",

         380,

         13,

         18,

         3,

         "Veg",

         "28FEB2025"d

  from sashelp.class(obs=1)

  union all

  select "Bibimbap",

         "South Korea",

         500,

         18,

         15,

         3,

         "NonVeg",

         "03APR2025"d

  from sashelp.class(obs=1)

  union all

  select "Chicken Biryani",

         "India",

         550,

         24,

         20,

         5,

         "NonVeg",

         "12FEB2025"d

  from sashelp.class(obs=1)

  union all

  select "Greek Salad",

         "Greece",

         220,

         8,

         14,

         1,

         "Veg",

         "25MAR2025"d

  from sashelp.class(obs=1)

  union all

  select "Pad Thai",

         "Thailand",

         420,

         17,

         14,

         4,

         "NonVeg",

         "18APR2025"d

  from sashelp.class(obs=1)

  union all

  select "Shakshuka",

         "Israel",

         300,

         14,

         16,

         3,

         "Veg",

         "30JAN2025"d

  from sashelp.class(obs=1)

  union all

  select "Poutine",

         "Canada",

         650,

         18,

         42,

         1,

         "NonVeg",

         "07MAR2025"d

  from sashelp.class(obs=1)

  union all

  select "Hummus Platter",

         "Middle East",

         260,

         10,

         12,

         2,

         "Veg",

         "14APR2025"d

  from sashelp.class(obs=1)

  ;

quit;

proc print data=work.world_cuisine;

  format Spiciness_Level spicefmt.

         Veg_or_NonVeg   $vegf.

         Menu_Date       date9.;

  title "World Cuisine Dataset as of %sysfunc(putn(&analysis_date.,date9.))";

run;

OUTPUT:

World Cuisine Dataset as of 21NOV2025

ObsDish_NameCountryCaloriesProteinFatSpiciness_LevelVeg_or_NonVegMenu_Date
1Paneer TikkaIndia2801816SpicyVegetarian15JAN2025
2SushiJapan200165MildNon-Vegetarian10FEB2025
3Tacos al PastorMexico4502022SpicyNon-Vegetarian05MAR2025
4Margherita PizzaItaly3201412MildVegetarian20JAN2025
5Falafel WrapLebanon3801318MediumVegetarian28FEB2025
6BibimbapSouth Korea5001815MediumNon-Vegetarian03APR2025
7Chicken BiryaniIndia5502420Very SpicyNon-Vegetarian12FEB2025
8Greek SaladGreece220814Very MildVegetarian25MAR2025
9Pad ThaiThailand4201714SpicyNon-Vegetarian18APR2025
10ShakshukaIsrael3001416MediumVegetarian30JAN2025
11PoutineCanada6501842Very MildNon-Vegetarian07MAR2025
12Hummus PlatterMiddle East2601012MildVegetarian14APR2025

3. Macro – nutrient categorization

Creates protein and fat category variables    

%macro nutrient_category(input_ds=, output_ds=);

data &output_ds.;

  set &input_ds.;

  length Protein_Cat Fat_Cat $20.;

  /* Protein-based category */

  if Protein < 10 then Protein_Cat = "Low Protein";

  else if 10 <= Protein < 20 then Protein_Cat = "Moderate Protein";

  else Protein_Cat = "High Protein";


  /* Fat-based category */

  if Fat < 10 then Fat_Cat = "Low Fat";

  else if 10 <= Fat < 20 then Fat_Cat = "Moderate Fat";

  else Fat_Cat = "High Fat";


  /*Date-based filter flag using DATE statement logic */

  if Menu_Date <= &analysis_date. then Available_Flag = 1;

  else Available_Flag = 0;

run;

%mend nutrient_category;


%nutrient_category(input_ds=work.world_cuisine, output_ds=work.cuisine_with_cat);

OUTPUT:

ObsDish_NameCountryCaloriesProteinFatSpiciness_LevelVeg_or_NonVegMenu_DateProtein_CatFat_CatAvailable_Flag
1Paneer TikkaIndia28018164Veg15JAN2025Moderate ProteinModerate Fat1
2SushiJapan2001652NonVeg10FEB2025Moderate ProteinLow Fat1
3Tacos al PastorMexico45020224NonVeg05MAR2025High ProteinHigh Fat1
4Margherita PizzaItaly32014122Veg20JAN2025Moderate ProteinModerate Fat1
5Falafel WrapLebanon38013183Veg28FEB2025Moderate ProteinModerate Fat1
6BibimbapSouth Korea50018153NonVeg03APR2025Moderate ProteinModerate Fat1
7Chicken BiryaniIndia55024205NonVeg12FEB2025High ProteinHigh Fat1
8Greek SaladGreece2208141Veg25MAR2025Low ProteinModerate Fat1
9Pad ThaiThailand42017144NonVeg18APR2025Moderate ProteinModerate Fat1
10ShakshukaIsrael30014163Veg30JAN2025Moderate ProteinModerate Fat1
11PoutineCanada65018421NonVeg07MAR2025Moderate ProteinHigh Fat1
12Hummus PlatterMiddle East26010122Veg14APR2025Moderate ProteinModerate Fat1


4. PROC MEANS – descriptive statistics

By Veg_or_NonVeg                                     

proc means data=work.cuisine_with_cat n mean std min max;

  class Veg_or_NonVeg;

  var Calories Protein Fat;

  format Veg_or_NonVeg $vegf.;

  title "Descriptive Statistics of World Cuisines by Veg/NonVeg";

run;

OUTPUT:

Descriptive Statistics of World Cuisines by Veg/NonVeg

The MEANS Procedure

Veg_or_NonVegN ObsVariableNMeanStd DevMinimumMaximum
Non-Vegetarian6
Calories
Protein
Fat
6
6
6
461.6666667
18.8333333
19.6666667
151.7124473
2.8577380
12.4365054
200.0000000
16.0000000
5.0000000
650.0000000
24.0000000
42.0000000
Vegetarian6
Calories
Protein
Fat
6
6
6
293.3333333
12.8333333
14.6666667
54.6504041
3.4880749
2.4221203
220.0000000
8.0000000
12.0000000
380.0000000
18.0000000
18.0000000

5. PROC STDIZE – standardize nutrients                    

Create standardized Z-scores for Calories, Protein, Fat

proc stdize data=work.cuisine_with_cat

            out=work.cuisine_std

            method=std;

  var Calories Protein Fat;

run;

OUTPUT:

ObsDish_NameCountryCaloriesProteinFatSpiciness_LevelVeg_or_NonVegMenu_DateProtein_CatFat_CatAvailable_Flag
1Paneer TikkaIndia-0.697360.49628-0.130614Veg15JAN2025Moderate ProteinModerate Fat1
2SushiJapan-1.269550.03818-1.362082NonVeg10FEB2025Moderate ProteinLow Fat1
3Tacos al PastorMexico0.518550.954380.541104NonVeg05MAR2025High ProteinHigh Fat1
4Margherita PizzaItaly-0.41126-0.41993-0.578422Veg20JAN2025Moderate ProteinModerate Fat1
5Falafel WrapLebanon0.01788-0.648980.093293Veg28FEB2025Moderate ProteinModerate Fat1
6BibimbapSouth Korea0.876170.49628-0.242563NonVeg03APR2025Moderate ProteinModerate Fat1
7Chicken BiryaniIndia1.233791.870580.317205NonVeg12FEB2025High ProteinHigh Fat1
8Greek SaladGreece-1.12650-1.79423-0.354511Veg25MAR2025Low ProteinModerate Fat1
9Pad ThaiThailand0.303980.26723-0.354514NonVeg18APR2025Moderate ProteinModerate Fat1
10ShakshukaIsrael-0.55431-0.41993-0.130613Veg30JAN2025Moderate ProteinModerate Fat1
11PoutineCanada1.949030.496282.780141NonVeg07MAR2025Moderate ProteinHigh Fat1
12Hummus PlatterMiddle East-0.84041-1.33613-0.578422Veg14APR2025Moderate ProteinModerate Fat1


6. PROC SGPANEL – visualization by Veg_or_NonVeg

proc sgpanel data=work.cuisine_std;

  panelby Veg_or_NonVeg / columns=2;

  scatter x=Protein y=Calories / group=Country;

  rowaxis label="Calories (Standardized)";

  colaxis label="Protein (Standardized)";

  format Veg_or_NonVeg $vegf.;

  title "Calories vs Protein by Veg/NonVeg (Standardized Values)";

run;

OUTPUT:
The SGPanel Procedure





To Visit My Previous Electronic Data Analysis:Click Here
To Visit My Previous IPS Toppers Dataset:Click Here
To Visit My Previous Global Money Loan Trends Dataset:Click Here
To Visit My Previous Statewise Population Analysis:Click Here



Follow Us On : 


 


--- FOLLOW OUR BLOG FOR MORE INFORMATION.

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




No comments:

Post a Comment