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