258.SOAP MARKET ANALYTICS — PROC CONTENTS | PROC PRINT | PROC MEANS | PROC FREQ | PROC SQL | PROC REPORT | PROC SGPLOT | PROC TABULATE IN SAS

SOAP MARKET ANALYTICS — PROC CONTENTS | PROC PRINT | PROC MEANS | PROC FREQ | PROC SQL | PROC REPORT | PROC SGPLOT | PROC TABULATE IN SAS

/* Goal: Creating The Dataset Of Soap Product In India*/

1. Create main dataset

options nocenter;

data soaps;

  infile datalines dsd dlm=',' missover;

  length Soap_ID 8 Name $40 Brand $25 Type $20 Formulation $15 

         Scent $20 Color $15 Suitable_Skin $15 Region_Made $20 Returnable $1;

  informat Mfg_Date Expiry_Date ddmmyy10.;

  format Mfg_Date Expiry_Date date9.;

  input Soap_ID Name :$40. Brand :$25. Type :$20. Formulation :$15.

        Price Weight_g pH Scent :$20. Color :$15. Suitable_Skin :$15. 

        Region_Made :$20. Mfg_Date :ddmmyy10. Expiry_Date :ddmmyy10.

        Rating Units_Sold_Month Returnable :$1.;

datalines;

1,Navratna Ayurvedic,Navratna,Toilet,Herbal,30,75,7.2,Jasmine,White,All,Kerala,01-01-2024,01-01-2026,4.2,1200,Y

2,GentleCare Liquid,GentleCare,Liquid,Cosmetic,95,250,5.5,Fresh,Lime,Normal,Delhi,15-02-2024,15-02-2026,4.5,800,Y

3,HerbGlow,GloHerb,Toilet,Herbal,40,80,6.8,Aloe,Green,Dry,Goa,01-03-2024,01-03-2026,4.0,950,N

4,Medix Plus,Medix,Syndet,Medicated,85,100,6.2,FragranceFree,Beige,Sensitive,Mumbai,20-02-2024,20-02-2026,4.7,2000,Y

5,SilkTouch,SilkCo,Toilet,Cosmetic,55,100,7.6,Rose,Pink,Normal,Karnataka,05-01-2024,05-01-2026,4.1,700,N

6,AloePure Bar,AloePure,Toilet,Herbal,48,90,6.5,Aloe,LightGreen,Therapeutic,TamilNadu,10-04-2024,10-04-2026,4.3,540,Y

7,GreenEarth Eco,GreenEarth,Toilet,Eco-friendly,65,85,8.0,Herbal,OffWhite,All,Rajasthan,01-05-2024,01-05-2026,3.9,320,Y

8,MountainFresh,HighPeak,Toilet,Cosmetic,70,110,7.4,Pine,White,Normal,UP,12-03-2024,12-03-2026,4.0,410,N

9,GlycerinLux,GlycoLux,Toilet,Glycerin,120,75,7.8,Glycerin,Transparent,Dry,Andhra,01-06-2024,01-06-2026,4.6,260,Y

10,Dettol Original,Reckitt,Toilet,Medicated,40,75,6.6,Medicinal,White,All,Maharashtra,01-07-2024,01-07-2026,4.4,5000,Y

11,HerbalFresh,LotusHerbals,Toilet,Herbal,110,90,6.9,Sandal,Beige,Normal,Kerala,25-05-2024,25-05-2026,4.5,1350,N

12,NeemShield,Neemo,Toilet,Herbal,35,80,6.3,Neem,Green,Sensitive,TamilNadu,10-06-2024,10-06-2026,4.1,880,Y

;

run;

proc print;run;

Output:

ObsSoap_IDNameBrandTypeFormulationScentColorSuitable_SkinRegion_MadeReturnableMfg_DateExpiry_DatePriceWeight_gpHRatingUnits_Sold_Month
11Navratna AyurvedicNavratnaToiletHerbalJasmineWhiteAllKeralaY01JAN202401JAN202630757.24.21200
22GentleCare LiquidGentleCareLiquidCosmeticFreshLimeNormalDelhiY15FEB202415FEB2026952505.54.5800
33HerbGlowGloHerbToiletHerbalAloeGreenDryGoaN01MAR202401MAR202640806.84.0950
44Medix PlusMedixSyndetMedicatedFragranceFreeBeigeSensitiveMumbaiY20FEB202420FEB2026851006.24.72000
55SilkTouchSilkCoToiletCosmeticRosePinkNormalKarnatakaN05JAN202405JAN2026551007.64.1700
66AloePure BarAloePureToiletHerbalAloeLightGreenTherapeuticTamilNaduY10APR202410APR202648906.54.3540
77GreenEarth EcoGreenEarthToiletEco-friendlyHerbalOffWhiteAllRajasthanY01MAY202401MAY202665858.03.9320
88MountainFreshHighPeakToiletCosmeticPineWhiteNormalUPN12MAR202412MAR2026701107.44.0410
99GlycerinLuxGlycoLuxToiletGlycerinGlycerinTransparentDryAndhraY01JUN202401JUN2026120757.84.6260
1010Dettol OriginalReckittToiletMedicatedMedicinalWhiteAllMaharashtraY01JUL202401JUL202640756.64.45000
1111HerbalFreshLotusHerbalsToiletHerbalSandalBeigeNormalKeralaN25MAY202425MAY2026110906.94.51350
1212NeemShieldNeemoToiletHerbalNeemGreenSensitiveTamilNaduY10JUN202410JUN202635806.34.1880


2. Utility macro: run common PROCs

%macro basic_checks(ds);

  %put NOTE: Running basic data checks for &ds...;


  proc contents data=&ds position; title "Variable Attributes - &ds"; run;

  proc print data=&ds(obs=5); title "First 5 Obs - &ds"; run;

  proc means data=&ds n mean min max maxdec=2; 

    var Price Weight_g pH Units_Sold_Month Rating;

    title "Numeric Summary - &ds";

  run;

  proc freq data=&ds; 

    tables Type Formulation Suitable_Skin Region_Made Returnable / nocum;

    title "Frequency Tables - &ds";

  run;

%mend basic_checks;


%basic_checks(soaps);

Output:

Variable Attributes - soaps

The CONTENTS Procedure

Data Set NameWORK.SOAPSObservations12
Member TypeDATAVariables17
EngineV9Indexes0
Created08/11/2025 19:33:36Observation Length240
Last Modified08/11/2025 19:33:36Deleted Observations0
Protection CompressedNO
Data Set Type SortedNO
Label   
Data RepresentationSOLARIS_X86_64, LINUX_X86_64, ALPHA_TRU64, LINUX_IA64  
Encodingutf-8 Unicode (UTF-8)  
Engine/Host Dependent Information
Data Set Page Size131072
Number of Data Set Pages1
First Data Page1
Max Obs per Page545
Obs in First Data Page12
Number of Data Set Repairs0
Filename/saswork/SAS_work9FE400018955_odaws02-apse1-2.oda.sas.com/SAS_workCBFC00018955_odaws02-apse1-2.oda.sas.com/soaps.sas7bdat
Release Created9.0401M8
Host CreatedLinux
Inode Number959821
Access Permissionrw-r--r--
Owner Nameu63247146
File Size256KB
File Size (bytes)262144
Alphabetic List of Variables and Attributes
#VariableTypeLenFormatInformat
3BrandChar25  
7ColorChar15  
12Expiry_DateNum8DATE9.DDMMYY10.
5FormulationChar15  
11Mfg_DateNum8DATE9.DDMMYY10.
2NameChar40  
13PriceNum8  
16RatingNum8  
9Region_MadeChar20  
10ReturnableChar1  
6ScentChar20  
1Soap_IDNum8  
8Suitable_SkinChar15  
4TypeChar20  
17Units_Sold_MonthNum8  
14Weight_gNum8  
15pHNum8  
Variables in Creation Order
#VariableTypeLenFormatInformat
1Soap_IDNum8  
2NameChar40  
3BrandChar25  
4TypeChar20  
5FormulationChar15  
6ScentChar20  
7ColorChar15  
8Suitable_SkinChar15  
9Region_MadeChar20  
10ReturnableChar1  
11Mfg_DateNum8DATE9.DDMMYY10.
12Expiry_DateNum8DATE9.DDMMYY10.
13PriceNum8  
14Weight_gNum8  
15pHNum8  
16RatingNum8  
17Units_Sold_MonthNum8  

First 5 Obs - soaps

ObsSoap_IDNameBrandTypeFormulationScentColorSuitable_SkinRegion_MadeReturnableMfg_DateExpiry_DatePriceWeight_gpHRatingUnits_Sold_Month
11Navratna AyurvedicNavratnaToiletHerbalJasmineWhiteAllKeralaY01JAN202401JAN202630757.24.21200
22GentleCare LiquidGentleCareLiquidCosmeticFreshLimeNormalDelhiY15FEB202415FEB2026952505.54.5800
33HerbGlowGloHerbToiletHerbalAloeGreenDryGoaN01MAR202401MAR202640806.84.0950
44Medix PlusMedixSyndetMedicatedFragranceFreeBeigeSensitiveMumbaiY20FEB202420FEB2026851006.24.72000
55SilkTouchSilkCoToiletCosmeticRosePinkNormalKarnatakaN05JAN202405JAN2026551007.64.1700

Numeric Summary - soaps

The MEANS Procedure

VariableNMeanMinimumMaximum
Price
Weight_g
pH
Units_Sold_Month
Rating
12
12
12
12
12
66.08
100.83
6.90
1200.83
4.28
30.00
75.00
5.50
260.00
3.90
120.00
250.00
8.00
5000.00
4.70

Frequency Tables - soaps

The FREQ Procedure

TypeFrequencyPercent
Liquid18.33
Syndet18.33
Toilet1083.33
FormulationFrequencyPercent
Cosmetic325.00
Eco-friendly18.33
Glycerin18.33
Herbal541.67
Medicated216.67
Suitable_SkinFrequencyPercent
All325.00
Dry216.67
Normal433.33
Sensitive216.67
Therapeutic18.33
Region_MadeFrequencyPercent
Andhra18.33
Delhi18.33
Goa18.33
Karnataka18.33
Kerala216.67
Maharashtra18.33
Mumbai18.33
Rajasthan18.33
TamilNadu216.67
UP18.33
ReturnableFrequencyPercent
N433.33
Y866.67

3. Analysis macros

%macro summary_by(var);

  proc sql;

    create table sum_&var as

    select &var, count(*) as N, mean(Price) as AvgPrice format=8.2,

           sum(Units_Sold_Month) as TotalUnits

    from soaps

    group by &var

    order by TotalUnits desc;

  quit;


  proc print data=sum_&var; title "Summary by &var"; run;

%mend summary_by;


%macro add_price_band;

  data soaps;

    set soaps;

    length Price_Band $12;

    if Price < 60 then Price_Band='Budget';

    else if Price < 120 then Price_Band='Mid';

    else Price_Band='Premium';

  run;

proc print;run;

%mend add_price_band;


%summary_by(Type);

Output:

Summary by Type

ObsTypeNAvgPriceTotalUnits
1Toilet1061.3011610
2Syndet185.002000
3Liquid195.00800

%summary_by(Formulation);

Output:

Summary by Formulation

ObsFormulationNAvgPriceTotalUnits
1Medicated262.507000
2Herbal552.604920
3Cosmetic373.331910
4Eco-friendly165.00320
5Glycerin1120.00260

%add_price_band;

Output:

ObsSoap_IDNameBrandTypeFormulationScentColorSuitable_SkinRegion_MadeReturnableMfg_DateExpiry_DatePriceWeight_gpHRatingUnits_Sold_MonthPrice_Band
11Navratna AyurvedicNavratnaToiletHerbalJasmineWhiteAllKeralaY01JAN202401JAN202630757.24.21200Budget
22GentleCare LiquidGentleCareLiquidCosmeticFreshLimeNormalDelhiY15FEB202415FEB2026952505.54.5800Mid
33HerbGlowGloHerbToiletHerbalAloeGreenDryGoaN01MAR202401MAR202640806.84.0950Budget
44Medix PlusMedixSyndetMedicatedFragranceFreeBeigeSensitiveMumbaiY20FEB202420FEB2026851006.24.72000Mid
55SilkTouchSilkCoToiletCosmeticRosePinkNormalKarnatakaN05JAN202405JAN2026551007.64.1700Budget
66AloePure BarAloePureToiletHerbalAloeLightGreenTherapeuticTamilNaduY10APR202410APR202648906.54.3540Budget
77GreenEarth EcoGreenEarthToiletEco-friendlyHerbalOffWhiteAllRajasthanY01MAY202401MAY202665858.03.9320Mid
88MountainFreshHighPeakToiletCosmeticPineWhiteNormalUPN12MAR202412MAR2026701107.44.0410Mid
99GlycerinLuxGlycoLuxToiletGlycerinGlycerinTransparentDryAndhraY01JUN202401JUN2026120757.84.6260Premium
1010Dettol OriginalReckittToiletMedicatedMedicinalWhiteAllMaharashtraY01JUL202401JUL202640756.64.45000Budget
1111HerbalFreshLotusHerbalsToiletHerbalSandalBeigeNormalKeralaN25MAY202425MAY2026110906.94.51350Mid
1212NeemShieldNeemoToiletHerbalNeemGreenSensitiveTamilNaduY10JUN202410JUN202635806.34.1880Budget


%summary_by(Price_Band);

Output:

Summary by Price_Band

ObsPrice_BandNAvgPriceTotalUnits
1Budget641.339270
2Mid585.004880
3Premium1120.00260

4. Visual & report outputs

proc sort data=soaps out=soaps_sorted;

  by descending Units_Sold_Month;

run;


%let rpt_top_units = 500;

proc report data=soaps_sorted nowd;

  columns Name Brand Type Price Units_Sold_Month Rating;

  define Units_Sold_Month / analysis sum "Monthly Units";

  where Units_Sold_Month >= &rpt_top_units;

  title "Top Sellers - Units >= &rpt_top_units";

run;

Output:

Top Sellers - Units >= 500

NameBrandTypePriceMonthly UnitsRating
Dettol OriginalReckittToilet4050004.4
Medix PlusMedixSyndet8520004.7
HerbalFreshLotusHerbalsToilet11013504.5
Navratna AyurvedicNavratnaToilet3012004.2
HerbGlowGloHerbToilet409504
NeemShieldNeemoToilet358804.1
GentleCare LiquidGentleCareLiquid958004.5
SilkTouchSilkCoToilet557004.1
AloePure BarAloePureToilet485404.3

proc sgplot data=soaps;

  scatter x=Price y=Units_Sold_Month / datalabel=Brand;

  reg x=Price y=Units_Sold_Month;

  title "Price vs Monthly Sales";

run;

Output:



proc tabulate data=soaps;

  class Type Price_Band;

  var Units_Sold_Month;

  table Type, Price_Band*(Units_Sold_Month*sum);

  title "Sales by Type and Price Band";

run;

Output:

Sales by Type and Price Band

 Price_Band
BudgetMidPremium
Units_Sold_MonthUnits_Sold_MonthUnits_Sold_Month
SumSumSum
Type.800.00.
Liquid
Syndet.2000.00.
Toilet9270.002080.00260.00

5. Statistics With Proc Sql 

proc sql;

  create table brand_perf as

  select Brand, mean(Price) as AvgPrice, sum(Units_Sold_Month) as TotalUnits

  from soaps

  group by Brand;

quit;


proc print data=brand_perf;

run;

Output:

ObsBrandAvgPriceTotalUnits
1AloePure48540
2GentleCare95800
3GloHerb40950
4GlycoLux120260
5GreenEarth65320
6HighPeak70410
7LotusHerbals1101350
8Medix852000
9Navratna301200
10Neemo35880
11Reckitt405000
12SilkCo55700




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





--->PLEASE FOLLOW OUR BLOG FOR MORE INFORMATION.
--->PLEASE DO COMMENTS AND SHARE OUR BLOG.

PLEASE FOLLOW OUR TELEGRAM CHANNEL CLICK HERE

PLEASE FOLLOW OUR FACEBOOK PAGE  CLICK HERE

PLEASE FOLLOW OUR INSTAGRAM PAGE CLICK HERE

Comments

Popular posts from this blog

409.Can We Build a Reliable Emergency Services Analytics & Fraud Detection System in SAS While Identifying and Fixing Intentional Errors?

397.If a satellite has excellent signal strength but very high latency, can it still deliver good quality communication? Why or why not?A Sas Study

401.How Efficient Are Global Data Centers? A Complete SAS Analytics Study