255.SAS FEAST ON CHICKEN DATA: PROC FORMAT | PROC CONTENTS | PROC SORT | PROC PRINT | PROC FREQ | PROC MEANS | PROC UNIVARIATE | PROC SQL | PROC TRANSPOSE | PROC REPORT | PROC TABULATE | PROC SGPLOT | PROC EXPORT

SAS FEAST ON CHICKEN DATA: PROC FORMAT | PROC CONTENTS | PROC SORT | PROC PRINT | PROC FREQ | PROC MEANS | PROC UNIVARIATE | PROC SQL | PROC TRANSPOSE | PROC REPORT | PROC TABULATE | PROC SGPLOT | PROC EXPORT

 /*A dataset of chicken items in India*/

1) Create the dataset

options nocenter;

data chicken_india;

  infile datalines dlm=',' dsd truncover;

  length RecordID 8 Type $12 Breed $20 CutType $12 FeedType $15 Market $25 State $15 SellerType $12 ProcessingPlant $20 Cert $12;

  format DateSold yymmdd10.;

  input RecordID Type $ Breed $ CutType $ FeedType $ WeightKg PricePerKg DateSold : yymmdd10. Market $ State $ SellerType $ Vaccinated $ Organic $ Packaged $ ProcessingPlant $ Cert $ SalesQty;

datalines;

1,Broiler,Venky Broiler,Whole,Commercial,1.8,195,2025-06-02,Secunderabad,Telangana,Retail,Yes,No,No,PlantA,AGMARK,10

2,Layer,Desi Layer,Whole,Grain-fed,1.2,220,2025-06-03,Hyderabad,Telangana,Backyard,Yes,Yes,No,PlantB,NoCert,2

3,Country,Desi Country,Legs,Free-range,0.9,260,2025-06-05,Warangal,Telangana,Wholesale,Yes,Yes,No,PlantC,NoCert,20

4,Broiler,Silver Broiler,Breast,Commercial,0.7,250,2025-06-05,Vijayawada,Andhra Pradesh,Retail,Yes,No,Yes,PlantA,AGMARK,5

5,Free-range,Desi Free,Whole,Free-range,1.4,300,2025-06-06,Mumbai,Maharashtra,Wholesale,Yes,Yes,No,PlantD,ISO,50

6,Broiler,Venky Broiler,Wings,Commercial,0.4,185,2025-06-07,Pune,Maharashtra,Retail,Yes,No,No,PlantA,AGMARK,8

7,Layer,Commercial Layer,Breast,Grain-fed,0.6,210,2025-06-07,Chennai,Tamil Nadu,Supermarket,Yes,No,Yes,PlantE,FSSAI,12

8,Country,Desi Country,Whole,BackyardFeed,1.1,280,2025-06-08,Bengaluru,Karnataka,Backyard,Yes,Yes,No,PlantC,NoCert,1

9,Broiler,Silver Broiler,Legs,Commercial,1.0,230,2025-06-09,Secunderabad,Telangana,Retail,Yes,No,Yes,PlantA,AGMARK,6

10,Free-range,Desi Free,Breast,Free-range,0.8,320,2025-06-10,Hyderabad,Telangana,Supermarket,Yes,Yes,Yes,PlantD,ISO,4

11,Broiler,Venky Broiler,Whole,Commercial,1.5,200,2025-06-11,Visakhapatnam,Andhra Pradesh,Wholesale,Yes,No,No,PlantA,AGMARK,30

12,Country,Desi Country,Wings,BackyardFeed,0.5,270,2025-06-12,Vijayawada,Andhra Pradesh,Backyard,Yes,Yes,No,PlantC,NoCert,3

13,Layer,Commercial Layer,Legs,Grain-fed,0.9,205,2025-06-13,Lucknow,Uttar Pradesh,Wholesale,Yes,No,No,PlantE,FSSAI,40

14,Free-range,Desi Free,Wings,Free-range,0.3,350,2025-06-14,Kanpur,Uttar Pradesh,Retail,Yes,Yes,No,PlantD,ISO,2

15,Broiler,Silver Broiler,Breast,Commercial,0.95,240,2025-06-14,Patna,Bihar,Supermarket,Yes,No,Yes,PlantA,AGMARK,9

16,Broiler,Venky Broiler,Legs,Commercial,1.2,210,2025-06-15,Bhubaneswar,Odisha,Wholesale,Yes,No,No,PlantA,AGMARK,22

17,Country,Desi Country,Whole,BackyardFeed,1.6,290,2025-06-16,Ahmedabad,Gujarat,Backyard,Yes,Yes,No,PlantC,NoCert,1

18,Free-range,Desi Free,Legs,Free-range,1.3,310,2025-06-16,Surat,Gujarat,Retail,Yes,Yes,No,PlantD,ISO,7

19,Layer,Desi Layer,Wings,Grain-fed,0.45,215,2025-06-17,Indore,Madhya Pradesh,Wholesale,Yes,No,No,PlantE,FSSAI,35

20,Broiler,Silver Broiler,Whole,Commercial,2.1,190,2025-06-17,Bhopal,Madhya Pradesh,Retail,Yes,No,No,PlantA,AGMARK,11

21,Free-range,Desi Free,Breast,Free-range,0.75,340,2025-06-18,Jaipur,Rajasthan,Supermarket,Yes,Yes,Yes,PlantD,ISO,6

22,Country,Desi Country,Wings,BackyardFeed,0.6,275,2025-06-18,Udaipur,Rajasthan,Backyard,Yes,Yes,No,PlantC,NoCert,2

23,Broiler,Venky Broiler,Breast,Commercial,0.85,205,2025-06-19,Agra,Uttar Pradesh,Wholesale,Yes,No,No,PlantA,AGMARK,27

24,Layer,Commercial Layer,Whole,Grain-fed,1.05,200,2025-06-19,Varanasi,Uttar Pradesh,Retail,Yes,No,No,PlantE,FSSAI,4

25,Free-range,Desi Free,Wings,Free-range,0.55,330,2025-06-20,Shimla,Himachal Pradesh,Supermarket,Yes,Yes,No,PlantD,ISO,3

26,Broiler,Silver Broiler,Legs,Commercial,1.4,225,2025-06-20,Chandigarh,Chandigarh,Wholesale,Yes,No,No,PlantA,AGMARK,15

27,Country,Desi Country,Breast,BackyardFeed,1.9,295,2025-06-21,Dehradun,Uttrakhand,Backyard,Yes,Yes,No,PlantC,NoCert,1

28,Layer,Desi Layer,Legs,Grain-fed,0.4,210,2025-06-21,Noida,Uttar Pradesh,Supermarket,Yes,No,Yes,PlantE,FSSAI,5

29,Broiler,Venky Broiler,Whole,Commercial,1.7,198,2025-06-22,Ghaziabad,Uttar Pradesh,Retail,Yes,No,No,PlantA,AGMARK,13

30,Free-range,Desi Free,Breast,Free-range,0.95,315,2025-06-23,Kolkata,West Bengal,Wholesale,Yes,Yes,No,PlantD,ISO,18

31,Broiler,Silver Broiler,Wings,Commercial,0.35,190,2025-06-24,Asansol,West Bengal,Supermarket,Yes,No,Yes,PlantA,AGMARK,7

32,Country,Desi Country,Whole,BackyardFeed,2.0,305,2025-06-24,Patiala,Punjab,Backyard,Yes,Yes,No,PlantC,NoCert,1

33,Layer,Commercial Layer,Wings,Grain-fed,0.5,208,2025-06-25,Ludhiana,Punjab,Retail,Yes,No,No,PlantE,FSSAI,9

34,Free-range,Desi Free,Legs,Free-range,1.6,330,2025-06-25,Amritsar,Punjab,Wholesale,Yes,Yes,No,PlantD,ISO,20

35,Broiler,Venky Broiler,Breast,Commercial,1.1,215,2025-06-26,Raipur,Chhattisgarh,Retail,Yes,No,No,PlantA,AGMARK,14

36,Country,Desi Country,Breast,BackyardFeed,1.25,298,2025-06-26,Ranchi,Jharkhand,Backyard,Yes,Yes,No,PlantC,NoCert,2

;

run;

proc print;run;

Output:

ObsRecordIDTypeBreedCutTypeFeedTypeMarketStateSellerTypeProcessingPlantCertDateSoldWeightKgPricePerKgVaccinatedOrganicPackagedSalesQty
11BroilerVenky BroilerWholeCommercialSecunderabadTelanganaRetailPlantAAGMARK2025-06-021.80195YesNoNo10
22LayerDesi LayerWholeGrain-fedHyderabadTelanganaBackyardPlantBNoCert2025-06-031.20220YesYesNo2
33CountryDesi CountryLegsFree-rangeWarangalTelanganaWholesalePlantCNoCert2025-06-050.90260YesYesNo20
44BroilerSilver BroilerBreastCommercialVijayawadaAndhra PradeshRetailPlantAAGMARK2025-06-050.70250YesNoYes5
55Free-rangeDesi FreeWholeFree-rangeMumbaiMaharashtraWholesalePlantDISO2025-06-061.40300YesYesNo50
66BroilerVenky BroilerWingsCommercialPuneMaharashtraRetailPlantAAGMARK2025-06-070.40185YesNoNo8
77LayerCommercial LayerBreastGrain-fedChennaiTamil NaduSupermarketPlantEFSSAI2025-06-070.60210YesNoYes12
88CountryDesi CountryWholeBackyardFeedBengaluruKarnatakaBackyardPlantCNoCert2025-06-081.10280YesYesNo1
99BroilerSilver BroilerLegsCommercialSecunderabadTelanganaRetailPlantAAGMARK2025-06-091.00230YesNoYes6
1010Free-rangeDesi FreeBreastFree-rangeHyderabadTelanganaSupermarketPlantDISO2025-06-100.80320YesYesYes4
1111BroilerVenky BroilerWholeCommercialVisakhapatnamAndhra PradeshWholesalePlantAAGMARK2025-06-111.50200YesNoNo30
1212CountryDesi CountryWingsBackyardFeedVijayawadaAndhra PradeshBackyardPlantCNoCert2025-06-120.50270YesYesNo3
1313LayerCommercial LayerLegsGrain-fedLucknowUttar PradeshWholesalePlantEFSSAI2025-06-130.90205YesNoNo40
1414Free-rangeDesi FreeWingsFree-rangeKanpurUttar PradeshRetailPlantDISO2025-06-140.30350YesYesNo2
1515BroilerSilver BroilerBreastCommercialPatnaBiharSupermarketPlantAAGMARK2025-06-140.95240YesNoYes9
1616BroilerVenky BroilerLegsCommercialBhubaneswarOdishaWholesalePlantAAGMARK2025-06-151.20210YesNoNo22
1717CountryDesi CountryWholeBackyardFeedAhmedabadGujaratBackyardPlantCNoCert2025-06-161.60290YesYesNo1
1818Free-rangeDesi FreeLegsFree-rangeSuratGujaratRetailPlantDISO2025-06-161.30310YesYesNo7
1919LayerDesi LayerWingsGrain-fedIndoreMadhya PradeshWholesalePlantEFSSAI2025-06-170.45215YesNoNo35
2020BroilerSilver BroilerWholeCommercialBhopalMadhya PradeshRetailPlantAAGMARK2025-06-172.10190YesNoNo11
2121Free-rangeDesi FreeBreastFree-rangeJaipurRajasthanSupermarketPlantDISO2025-06-180.75340YesYesYes6
2222CountryDesi CountryWingsBackyardFeedUdaipurRajasthanBackyardPlantCNoCert2025-06-180.60275YesYesNo2
2323BroilerVenky BroilerBreastCommercialAgraUttar PradeshWholesalePlantAAGMARK2025-06-190.85205YesNoNo27
2424LayerCommercial LayerWholeGrain-fedVaranasiUttar PradeshRetailPlantEFSSAI2025-06-191.05200YesNoNo4
2525Free-rangeDesi FreeWingsFree-rangeShimlaHimachal PradesSupermarketPlantDISO2025-06-200.55330YesYesNo3
2626BroilerSilver BroilerLegsCommercialChandigarhChandigarhWholesalePlantAAGMARK2025-06-201.40225YesNoNo15
2727CountryDesi CountryBreastBackyardFeedDehradunUttrakhandBackyardPlantCNoCert2025-06-211.90295YesYesNo1
2828LayerDesi LayerLegsGrain-fedNoidaUttar PradeshSupermarketPlantEFSSAI2025-06-210.40210YesNoYes5
2929BroilerVenky BroilerWholeCommercialGhaziabadUttar PradeshRetailPlantAAGMARK2025-06-221.70198YesNoNo13
3030Free-rangeDesi FreeBreastFree-rangeKolkataWest BengalWholesalePlantDISO2025-06-230.95315YesYesNo18
3131BroilerSilver BroilerWingsCommercialAsansolWest BengalSupermarketPlantAAGMARK2025-06-240.35190YesNoYes7
3232CountryDesi CountryWholeBackyardFeedPatialaPunjabBackyardPlantCNoCert2025-06-242.00305YesYesNo1
3333LayerCommercial LayerWingsGrain-fedLudhianaPunjabRetailPlantEFSSAI2025-06-250.50208YesNoNo9
3434Free-rangeDesi FreeLegsFree-rangeAmritsarPunjabWholesalePlantDISO2025-06-251.60330YesYesNo20
3535BroilerVenky BroilerBreastCommercialRaipurChhattisgarhRetailPlantAAGMARK2025-06-261.10215YesNoNo14
3636CountryDesi CountryBreastBackyardFeedRanchiJharkhandBackyardPlantCNoCert2025-06-261.25298YesYesNo2


2) Useful formats and preparatory steps

proc format;

  value $yesno 'Yes'='Yes' 

                'No'='No';


  value $typefmt 'Broiler'='Broiler' 

                  'Layer'='Layer' 

                'Country'='Country' 

             'Free-range'='Free-range';

run;


proc contents data=chicken_india varnum;

run;

Output:

The CONTENTS Procedure

Data Set NameWORK.CHICKEN_INDIAObservations36
Member TypeDATAVariables17
EngineV9Indexes0
Created08/08/2025 18:51:53Observation Length208
Last Modified08/08/2025 18:51:53Deleted 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 Page629
Obs in First Data Page36
Number of Data Set Repairs0
Filename/saswork/SAS_work7F7700001503_odaws01-apse1-2.oda.sas.com/SAS_workA48A00001503_odaws01-apse1-2.oda.sas.com/chicken_india.sas7bdat
Release Created9.0401M8
Host CreatedLinux
Inode Number1082105
Access Permissionrw-r--r--
Owner Nameu63247146
File Size256KB
File Size (bytes)262144
Variables in Creation Order
#VariableTypeLenFormat
1RecordIDNum8 
2TypeChar12 
3BreedChar20 
4CutTypeChar12 
5FeedTypeChar15 
6MarketChar25 
7StateChar15 
8SellerTypeChar12 
9ProcessingPlantChar20 
10CertChar12 
11DateSoldNum8YYMMDD10.
12WeightKgNum8 
13PricePerKgNum8 
14VaccinatedChar8 
15OrganicChar8 
16PackagedChar8 
17SalesQtyNum8 

3) Basic exploration (printing & sorting)

purpose: PROC SORT orders data for joins, by-group processing, and clear reporting. 

proc sort data=chicken_india out=chicken_sorted;

  by State Type descending DateSold;

run;


purpose: PROC PRINT shows raw rows for quick inspection. 

proc print data=chicken_sorted(obs=20);

  title "First 20 records of chicken_sorted";

run;

First 20 records of chicken_sorted

ObsRecordIDTypeBreedCutTypeFeedTypeMarketStateSellerTypeProcessingPlantCertDateSoldWeightKgPricePerKgVaccinatedOrganicPackagedSalesQty
111BroilerVenky BroilerWholeCommercialVisakhapatnamAndhra PradeshWholesalePlantAAGMARK2025-06-111.50200YesNoNo30
24BroilerSilver BroilerBreastCommercialVijayawadaAndhra PradeshRetailPlantAAGMARK2025-06-050.70250YesNoYes5
312CountryDesi CountryWingsBackyardFeedVijayawadaAndhra PradeshBackyardPlantCNoCert2025-06-120.50270YesYesNo3
415BroilerSilver BroilerBreastCommercialPatnaBiharSupermarketPlantAAGMARK2025-06-140.95240YesNoYes9
526BroilerSilver BroilerLegsCommercialChandigarhChandigarhWholesalePlantAAGMARK2025-06-201.40225YesNoNo15
635BroilerVenky BroilerBreastCommercialRaipurChhattisgarhRetailPlantAAGMARK2025-06-261.10215YesNoNo14
717CountryDesi CountryWholeBackyardFeedAhmedabadGujaratBackyardPlantCNoCert2025-06-161.60290YesYesNo1
818Free-rangeDesi FreeLegsFree-rangeSuratGujaratRetailPlantDISO2025-06-161.30310YesYesNo7
925Free-rangeDesi FreeWingsFree-rangeShimlaHimachal PradesSupermarketPlantDISO2025-06-200.55330YesYesNo3
1036CountryDesi CountryBreastBackyardFeedRanchiJharkhandBackyardPlantCNoCert2025-06-261.25298YesYesNo2
118CountryDesi CountryWholeBackyardFeedBengaluruKarnatakaBackyardPlantCNoCert2025-06-081.10280YesYesNo1
1220BroilerSilver BroilerWholeCommercialBhopalMadhya PradeshRetailPlantAAGMARK2025-06-172.10190YesNoNo11
1319LayerDesi LayerWingsGrain-fedIndoreMadhya PradeshWholesalePlantEFSSAI2025-06-170.45215YesNoNo35
146BroilerVenky BroilerWingsCommercialPuneMaharashtraRetailPlantAAGMARK2025-06-070.40185YesNoNo8
155Free-rangeDesi FreeWholeFree-rangeMumbaiMaharashtraWholesalePlantDISO2025-06-061.40300YesYesNo50
1616BroilerVenky BroilerLegsCommercialBhubaneswarOdishaWholesalePlantAAGMARK2025-06-151.20210YesNoNo22
1732CountryDesi CountryWholeBackyardFeedPatialaPunjabBackyardPlantCNoCert2025-06-242.00305YesYesNo1
1834Free-rangeDesi FreeLegsFree-rangeAmritsarPunjabWholesalePlantDISO2025-06-251.60330YesYesNo20
1933LayerCommercial LayerWingsGrain-fedLudhianaPunjabRetailPlantEFSSAI2025-06-250.50208YesNoNo9
2022CountryDesi CountryWingsBackyardFeedUdaipurRajasthanBackyardPlantCNoCert2025-06-180.60275YesYesNo2

4) Frequency counts and cross-tabs

purpose: PROC FREQ shows counts and cross-tabulations for categorical exploration. 

proc freq data=chicken_india;

  tables State Type*CutType FeedType*Organic / nocum nopercent;

run;

Output:

The FREQ Procedure

StateFrequency
Andhra Pradesh3
Bihar1
Chandigarh1
Chhattisgarh1
Gujarat2
Himachal Prades1
Jharkhand1
Karnataka1
Madhya Pradesh2
Maharashtra2
Odisha1
Punjab3
Rajasthan2
Tamil Nadu1
Telangana5
Uttar Pradesh6
Uttrakhand1
West Bengal2
Frequency
Row Pct
Col Pct
Table of Type by CutType
TypeCutType
BreastLegsWholeWingsTotal
Broiler
4
30.77
40.00
3
23.08
37.50
4
30.77
40.00
2
15.38
25.00
13
 
 
Country
2
25.00
20.00
1
12.50
12.50
3
37.50
30.00
2
25.00
25.00
8
 
 
Free-range
3
37.50
30.00
2
25.00
25.00
1
12.50
10.00
2
25.00
25.00
8
 
 
Layer
1
14.29
10.00
2
28.57
25.00
2
28.57
20.00
2
28.57
25.00
7
 
 
Total
10
8
10
8
36
Frequency
Row Pct
Col Pct
Table of FeedType by Organic
FeedTypeOrganic
NoYesTotal
BackyardFeed
0
0.00
0.00
7
100.00
41.18
7
 
 
Commercial
13
100.00
68.42
0
0.00
0.00
13
 
 
Free-range
0
0.00
0.00
9
100.00
52.94
9
 
 
Grain-fed
6
85.71
31.58
1
14.29
5.88
7
 
 
Total
19
17
36

5) Summary statistics

purpose: PROC MEANS computes numeric summaries (mean, median, std, quartiles) often by groups. 

proc means data=chicken_india n mean median min max std q1 q3;

  var WeightKg PricePerKg SalesQty;

  class Type;

run;

Output:

The MEANS Procedure

TypeN ObsVariableNMeanMedianMinimumMaximumStd DevLower QuartileUpper Quartile
Broiler13
WeightKg
PricePerKg
SalesQty
13
13
13
1.1576923
210.2307692
13.6153846
1.1000000
205.0000000
11.0000000
0.3500000
185.0000000
5.0000000
2.1000000
250.0000000
30.0000000
0.5302696
20.5513740
8.0056070
0.8500000
195.0000000
8.0000000
1.5000000
225.0000000
15.0000000
Country8
WeightKg
PricePerKg
SalesQty
8
8
8
1.2312500
284.1250000
3.8750000
1.1750000
285.0000000
1.5000000
0.5000000
260.0000000
1.0000000
2.0000000
305.0000000
20.0000000
0.5650142
15.4127730
6.5560768
0.7500000
272.5000000
1.0000000
1.7500000
296.5000000
2.5000000
Free-range8
WeightKg
PricePerKg
SalesQty
8
8
8
0.9562500
324.3750000
13.7500000
0.8750000
325.0000000
6.5000000
0.3000000
300.0000000
2.0000000
1.6000000
350.0000000
50.0000000
0.4459640
16.3526975
16.1488611
0.6500000
312.5000000
3.5000000
1.3500000
335.0000000
19.0000000
Layer7
WeightKg
PricePerKg
SalesQty
7
7
7
0.7285714
209.7142857
15.2857143
0.6000000
210.0000000
9.0000000
0.4000000
200.0000000
2.0000000
1.2000000
220.0000000
40.0000000
0.3186654
6.4990842
15.5960923
0.4500000
205.0000000
4.0000000
1.0500000
215.0000000
35.0000000

purpose: PROC UNIVARIATE examines distributional properties and outliers for numeric variables. 

proc univariate data=chicken_india;

  var PricePerKg WeightKg;

  histogram PricePerKg / normal;

run;

Output:

The UNIVARIATE Procedure

Variable: PricePerKg

Moments
N36Sum Weights36
Mean251.916667Sum Observations9069
Std Deviation51.8830415Variance2691.85
Skewness0.3907722Kurtosis-1.3501836
Uncorrected SS2378847Corrected SS94214.75
Coeff Variation20.5953192Std Error Mean8.64717359
Basic Statistical Measures
LocationVariability
Mean251.9167Std Deviation51.88304
Median235.0000Variance2692
Mode210.0000Range165.00000
  Interquartile Range92.50000
Tests for Location: Mu0=0
TestStatisticp Value
Student's tt29.13283Pr > |t|<.0001
SignM18Pr >= |M|<.0001
Signed RankS333Pr >= |S|<.0001
Quantiles (Definition 5)
LevelQuantile
100% Max350.0
99%350.0
95%340.0
90%330.0
75% Q3299.0
50% Median235.0
25% Q1206.5
10%195.0
5%190.0
1%185.0
0% Min185.0
Extreme Observations
LowestHighest
ValueObsValueObs
185632010
1903133025
1902033034
195134021
1982935014

The UNIVARIATE Procedure

Histogram for PricePerKg


The UNIVARIATE Procedure

Fitted Normal Distribution for PricePerKg

Parameters for Normal Distribution
ParameterSymbolEstimate
MeanMu251.9167
Std DevSigma51.88304
Goodness-of-Fit Tests for Normal Distribution
TestStatisticp Value
Kolmogorov-SmirnovD0.17829068Pr > D<0.010
Cramer-von MisesW-Sq0.23894122Pr > W-Sq<0.005
Anderson-DarlingA-Sq1.38500966Pr > A-Sq<0.005
Quantiles for Normal Distribution
PercentQuantile
ObservedEstimated
1.0185.000131.219
5.0190.000166.577
10.0195.000185.426
25.0206.500216.922
50.0235.000251.917
75.0299.000286.911
90.0330.000318.407
95.0340.000337.257
99.0350.000372.615

The UNIVARIATE Procedure

Variable: WeightKg

Moments
N36Sum Weights36
Mean1.04583333Sum Observations37.65
Std Deviation0.50190708Variance0.25191071
Skewness0.40761513Kurtosis-0.7442929
Uncorrected SS48.1925Corrected SS8.816875
Coeff Variation47.991115Std Error Mean0.08365118
Basic Statistical Measures
LocationVariability
Mean1.045833Std Deviation0.50191
Median0.975000Variance0.25191
Mode0.400000Range1.80000
  Interquartile Range0.80000

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

Tests for Location: Mu0=0
TestStatisticp Value
Student's tt12.50231Pr > |t|<.0001
SignM18Pr >= |M|<.0001
Signed RankS333Pr >= |S|<.0001
Quantiles (Definition 5)
LevelQuantile
100% Max2.100
99%2.100
95%2.000
90%1.800
75% Q31.400
50% Median0.975
25% Q10.600
10%0.400
5%0.350
1%0.300
0% Min0.300
Extreme Observations
LowestHighest
ValueObsValueObs
0.30141.729
0.35311.81
0.40281.927
0.4062.032
0.45192.120

6) PROC SQL examples (joins, aggregations, derived table)

 1) Aggregation by state and type 

purpose: PROC SQL performs SQL-style grouping/aggregation and creates summary tables. 

proc sql;

  create table sales_summary as

  select State, Type,

         sum(SalesQty) as TotalSold,

         mean(PricePerKg) as AvgPrice format=8.2,

         mean(WeightKg) as AvgWeight format=8.2

  from chicken_india

  group by State, Type

  order by State, Type;

quit;

proc print;run;

Output:

ObsStateTypeTotalSoldAvgPriceAvgWeight
1Andhra PradeshBroiler35225.001.10
2Andhra PradeshCountry3270.000.50
3BiharBroiler9240.000.95
4ChandigarhBroiler15225.001.40
5ChhattisgarhBroiler14215.001.10
6GujaratCountry1290.001.60
7GujaratFree-range7310.001.30
8Himachal PradesFree-range3330.000.55
9JharkhandCountry2298.001.25
10KarnatakaCountry1280.001.10
11Madhya PradeshBroiler11190.002.10
12Madhya PradeshLayer35215.000.45
13MaharashtraBroiler8185.000.40
14MaharashtraFree-range50300.001.40
15OdishaBroiler22210.001.20
16PunjabCountry1305.002.00
17PunjabFree-range20330.001.60
18PunjabLayer9208.000.50
19RajasthanCountry2275.000.60
20RajasthanFree-range6340.000.75
21Tamil NaduLayer12210.000.60
22TelanganaBroiler16212.501.40
23TelanganaCountry20260.000.90
24TelanganaFree-range4320.000.80
25TelanganaLayer2220.001.20
26Uttar PradeshBroiler40201.501.28
27Uttar PradeshFree-range2350.000.30
28Uttar PradeshLayer49205.000.78
29UttrakhandCountry1295.001.90
30West BengalBroiler7190.000.35
31West BengalFree-range18315.000.95

 

2) Finding top-selling records across India 

purpose: PROC SQL can compute new variables and sort by calculated metrics. 

proc sql outobs=10;

  create table top_sales as

  select *, SalesQty*PricePerKg as Revenue format=12.2

  from chicken_india

  order by Revenue desc;

quit;

proc print;run;

Output:

ObsRecordIDTypeBreedCutTypeFeedTypeMarketStateSellerTypeProcessingPlantCertDateSoldWeightKgPricePerKgVaccinatedOrganicPackagedSalesQtyRevenue
15Free-rangeDesi FreeWholeFree-rangeMumbaiMaharashtraWholesalePlantDISO2025-06-061.40300YesYesNo5015000.00
213LayerCommercial LayerLegsGrain-fedLucknowUttar PradeshWholesalePlantEFSSAI2025-06-130.90205YesNoNo408200.00
319LayerDesi LayerWingsGrain-fedIndoreMadhya PradeshWholesalePlantEFSSAI2025-06-170.45215YesNoNo357525.00
434Free-rangeDesi FreeLegsFree-rangeAmritsarPunjabWholesalePlantDISO2025-06-251.60330YesYesNo206600.00
511BroilerVenky BroilerWholeCommercialVisakhapatnamAndhra PradeshWholesalePlantAAGMARK2025-06-111.50200YesNoNo306000.00
630Free-rangeDesi FreeBreastFree-rangeKolkataWest BengalWholesalePlantDISO2025-06-230.95315YesYesNo185670.00
723BroilerVenky BroilerBreastCommercialAgraUttar PradeshWholesalePlantAAGMARK2025-06-190.85205YesNoNo275535.00
83CountryDesi CountryLegsFree-rangeWarangalTelanganaWholesalePlantCNoCert2025-06-050.90260YesYesNo205200.00
916BroilerVenky BroilerLegsCommercialBhubaneswarOdishaWholesalePlantAAGMARK2025-06-151.20210YesNoNo224620.00
1026BroilerSilver BroilerLegsCommercialChandigarhChandigarhWholesalePlantAAGMARK2025-06-201.40225YesNoNo153375.00


7) Data reshaping and reporting

purpose: PROC TRANSPOSE reshapes long->wide (or vice versa) for particular reporting layouts. 

proc transpose data=sales_summary out=sales_transpose prefix=Val_;

  by State;

  id Type;

  var TotalSold AvgPrice;

run;

proc print;run;

Output:

ObsState_NAME_Val_BroilerVal_CountryVal_Free-rangeVal_Layer
1Andhra PradeshTotalSold35.03..
2Andhra PradeshAvgPrice225.0270..
3BiharTotalSold9.0...
4BiharAvgPrice240.0...
5ChandigarhTotalSold15.0...
6ChandigarhAvgPrice225.0...
7ChhattisgarhTotalSold14.0...
8ChhattisgarhAvgPrice215.0...
9GujaratTotalSold.17.
10GujaratAvgPrice.290310.
11Himachal PradesTotalSold..3.
12Himachal PradesAvgPrice..330.
13JharkhandTotalSold.2..
14JharkhandAvgPrice.298..
15KarnatakaTotalSold.1..
16KarnatakaAvgPrice.280..
17Madhya PradeshTotalSold11.0..35
18Madhya PradeshAvgPrice190.0..215
19MaharashtraTotalSold8.0.50.
20MaharashtraAvgPrice185.0.300.
21OdishaTotalSold22.0...
22OdishaAvgPrice210.0...
23PunjabTotalSold.1209
24PunjabAvgPrice.305330208
25RajasthanTotalSold.26.
26RajasthanAvgPrice.275340.
27Tamil NaduTotalSold...12
28Tamil NaduAvgPrice...210
29TelanganaTotalSold16.02042
30TelanganaAvgPrice212.5260320220
31Uttar PradeshTotalSold40.0.249
32Uttar PradeshAvgPrice201.5.350205
33UttrakhandTotalSold.1..
34UttrakhandAvgPrice.295..
35West BengalTotalSold7.0.18.
36West BengalAvgPrice190.0.315.


purpose: PROC REPORT creates formatted tables (customizable) for publication-ready output. 

proc report data=sales_summary nowd;

  columns State Type TotalSold AvgPrice AvgWeight;

  define State / group;

  define Type / across;

  define TotalSold / sum;

run;

Output:


Type 
StateBroilerCountryFree-rangeLayerTotalSoldAvgPriceAvgWeight
Andhra Pradesh11..38495.001.60
Bihar1...9240.000.95
Chandigarh1...15225.001.40
Chhattisgarh1...14215.001.10
Gujarat.11.8600.002.90
Himachal Prades..1.3330.000.55
Jharkhand.1..2298.001.25
Karnataka.1..1280.001.10
Madhya Pradesh1..146405.002.55
Maharashtra1.1.58485.001.80
Odisha1...22210.001.20
Punjab.11130843.004.10
Rajasthan.11.8615.001.35
Tamil Nadu...112210.000.60
Telangana1111421012.504.30
Uttar Pradesh1.1191756.502.36
Uttrakhand.1..1295.001.90
West Bengal1.1.25505.001.30


8) Tabulate and summary tables

purpose: PROC TABULATE builds multi-dimensional summary tables with compact syntax. 

proc tabulate data=chicken_india;

  class State Type SellerType;

  var PricePerKg WeightKg SalesQty;

  table State, Type* (n sum*SalesQty mean*PricePerKg);

run;

Output:

Type
BroilerCountryFree-rangeLayer
NSumMeanNSumMeanNSumMeanNSumMean
SalesQtyPricePerKgSalesQtyPricePerKgSalesQtyPricePerKgSalesQtyPricePerKg
State235.00225.0013.00270.00......
Andhra Pradesh
Bihar19.00240.00.........
Chandigarh115.00225.00.........
Chhattisgarh114.00215.00.........
Gujarat...11.00290.0017.00310.00...
Himachal Prades......13.00330.00...
Jharkhand...12.00298.00......
Karnataka...11.00280.00......
Madhya Pradesh111.00190.00......135.00215.00
Maharashtra18.00185.00...150.00300.00...
Odisha122.00210.00.........
Punjab...11.00305.00120.00330.0019.00208.00
Rajasthan...12.00275.0016.00340.00...
Tamil Nadu.........112.00210.00
Telangana216.00212.50120.00260.0014.00320.0012.00220.00
Uttar Pradesh240.00201.50...12.00350.00349.00205.00
Uttrakhand...11.00295.00......
West Bengal17.00190.00...118.00315.00...


9) Data quality checks using DATA step and PROC FREQ

 Create QC flags 

purpose: DATA step generates QC flags and derived variables for validation. 

data chicken_qc;

  set chicken_india;

  if PricePerKg <= 0 then Price_flag='Bad';

  else Price_flag='OK';

  if WeightKg <= 0 or WeightKg > 5 then Weight_flag='Check';

  else Weight_flag='OK';

run;

proc print;run;

Output:

ObsRecordIDTypeBreedCutTypeFeedTypeMarketStateSellerTypeProcessingPlantCertDateSoldWeightKgPricePerKgVaccinatedOrganicPackagedSalesQtyPrice_flagWeight_flag
11BroilerVenky BroilerWholeCommercialSecunderabadTelanganaRetailPlantAAGMARK2025-06-021.80195YesNoNo10OKOK
22LayerDesi LayerWholeGrain-fedHyderabadTelanganaBackyardPlantBNoCert2025-06-031.20220YesYesNo2OKOK
33CountryDesi CountryLegsFree-rangeWarangalTelanganaWholesalePlantCNoCert2025-06-050.90260YesYesNo20OKOK
44BroilerSilver BroilerBreastCommercialVijayawadaAndhra PradeshRetailPlantAAGMARK2025-06-050.70250YesNoYes5OKOK
55Free-rangeDesi FreeWholeFree-rangeMumbaiMaharashtraWholesalePlantDISO2025-06-061.40300YesYesNo50OKOK
66BroilerVenky BroilerWingsCommercialPuneMaharashtraRetailPlantAAGMARK2025-06-070.40185YesNoNo8OKOK
77LayerCommercial LayerBreastGrain-fedChennaiTamil NaduSupermarketPlantEFSSAI2025-06-070.60210YesNoYes12OKOK
88CountryDesi CountryWholeBackyardFeedBengaluruKarnatakaBackyardPlantCNoCert2025-06-081.10280YesYesNo1OKOK
99BroilerSilver BroilerLegsCommercialSecunderabadTelanganaRetailPlantAAGMARK2025-06-091.00230YesNoYes6OKOK
1010Free-rangeDesi FreeBreastFree-rangeHyderabadTelanganaSupermarketPlantDISO2025-06-100.80320YesYesYes4OKOK
1111BroilerVenky BroilerWholeCommercialVisakhapatnamAndhra PradeshWholesalePlantAAGMARK2025-06-111.50200YesNoNo30OKOK
1212CountryDesi CountryWingsBackyardFeedVijayawadaAndhra PradeshBackyardPlantCNoCert2025-06-120.50270YesYesNo3OKOK
1313LayerCommercial LayerLegsGrain-fedLucknowUttar PradeshWholesalePlantEFSSAI2025-06-130.90205YesNoNo40OKOK
1414Free-rangeDesi FreeWingsFree-rangeKanpurUttar PradeshRetailPlantDISO2025-06-140.30350YesYesNo2OKOK
1515BroilerSilver BroilerBreastCommercialPatnaBiharSupermarketPlantAAGMARK2025-06-140.95240YesNoYes9OKOK
1616BroilerVenky BroilerLegsCommercialBhubaneswarOdishaWholesalePlantAAGMARK2025-06-151.20210YesNoNo22OKOK
1717CountryDesi CountryWholeBackyardFeedAhmedabadGujaratBackyardPlantCNoCert2025-06-161.60290YesYesNo1OKOK
1818Free-rangeDesi FreeLegsFree-rangeSuratGujaratRetailPlantDISO2025-06-161.30310YesYesNo7OKOK
1919LayerDesi LayerWingsGrain-fedIndoreMadhya PradeshWholesalePlantEFSSAI2025-06-170.45215YesNoNo35OKOK
2020BroilerSilver BroilerWholeCommercialBhopalMadhya PradeshRetailPlantAAGMARK2025-06-172.10190YesNoNo11OKOK
2121Free-rangeDesi FreeBreastFree-rangeJaipurRajasthanSupermarketPlantDISO2025-06-180.75340YesYesYes6OKOK
2222CountryDesi CountryWingsBackyardFeedUdaipurRajasthanBackyardPlantCNoCert2025-06-180.60275YesYesNo2OKOK
2323BroilerVenky BroilerBreastCommercialAgraUttar PradeshWholesalePlantAAGMARK2025-06-190.85205YesNoNo27OKOK
2424LayerCommercial LayerWholeGrain-fedVaranasiUttar PradeshRetailPlantEFSSAI2025-06-191.05200YesNoNo4OKOK
2525Free-rangeDesi FreeWingsFree-rangeShimlaHimachal PradesSupermarketPlantDISO2025-06-200.55330YesYesNo3OKOK
2626BroilerSilver BroilerLegsCommercialChandigarhChandigarhWholesalePlantAAGMARK2025-06-201.40225YesNoNo15OKOK
2727CountryDesi CountryBreastBackyardFeedDehradunUttrakhandBackyardPlantCNoCert2025-06-211.90295YesYesNo1OKOK
2828LayerDesi LayerLegsGrain-fedNoidaUttar PradeshSupermarketPlantEFSSAI2025-06-210.40210YesNoYes5OKOK
2929BroilerVenky BroilerWholeCommercialGhaziabadUttar PradeshRetailPlantAAGMARK2025-06-221.70198YesNoNo13OKOK
3030Free-rangeDesi FreeBreastFree-rangeKolkataWest BengalWholesalePlantDISO2025-06-230.95315YesYesNo18OKOK
3131BroilerSilver BroilerWingsCommercialAsansolWest BengalSupermarketPlantAAGMARK2025-06-240.35190YesNoYes7OKOK
3232CountryDesi CountryWholeBackyardFeedPatialaPunjabBackyardPlantCNoCert2025-06-242.00305YesYesNo1OKOK
3333LayerCommercial LayerWingsGrain-fedLudhianaPunjabRetailPlantEFSSAI2025-06-250.50208YesNoNo9OKOK
3434Free-rangeDesi FreeLegsFree-rangeAmritsarPunjabWholesalePlantDISO2025-06-251.60330YesYesNo20OKOK
3535BroilerVenky BroilerBreastCommercialRaipurChhattisgarhRetailPlantAAGMARK2025-06-261.10215YesNoNo14OKOK
3636CountryDesi CountryBreastBackyardFeedRanchiJharkhandBackyardPlantCNoCert2025-06-261.25298YesYesNo2OKOK


purpose: PROC FREQ inspects QC flag distributions to find anomalies. 

proc freq data=chicken_qc;

  tables Price_flag Weight_flag Cert;

run;

Output:

The FREQ Procedure

Price_flagFrequencyPercentCumulative
Frequency
Cumulative
Percent
OK36100.0036100.00
Weight_flagFrequencyPercentCumulative
Frequency
Cumulative
Percent
OK36100.0036100.00
CertFrequencyPercentCumulative
Frequency
Cumulative
Percent
AGMARK1336.111336.11
FSSAI616.671952.78
ISO822.222775.00
NoCert925.0036100.00

10) Advanced: macros (generation, batch reports, parameterization)

 Macro 1: create a report filtered by state 

purpose: %state_report generates state-specific summary tables and prints—parameterized reporting. 

%macro state_report(st=);

  proc sql;

    create table state_&st. as

    select *, SalesQty*PricePerKg as Revenue format=12.2

    from chicken_india

    where upcase(State)=upcase("&st.");

  quit;


  proc means data=state_&st. n mean median min max;

    var PricePerKg WeightKg SalesQty Revenue;

  run;


  proc print data=state_&st.(obs=15);

    title "Sample records for state &st.";

  run;

%mend state_report;



Macro 2: run state_report for a list of states 

purpose: %batch_states loops macros to run repeated reports for many states in a single call. 

%macro batch_states(states_list);

  %local i s next;

  %let i=1;

  %do %while(%scan(&states_list., &i.) ne );

    %let s = %scan(&states_list., &i.);

    %state_report(st=&s);

    %let i=%eval(&i.+1);

  %end;

%mend batch_states;



 Macro 3: create an aggregated exported CSV 

purpose: %export_summary creates aggregated CSV exports for downstream use. 

%macro export_summary(outpath=/tmp);

  proc sql;

    create table summary_all as

    select Type, FeedType, sum(SalesQty) as Qty, round(mean(PricePerKg),0.01) as AvgPrice

    from chicken_india

    group by Type, FeedType;

  quit;


  proc export data=summary_all

    outfile="&outpath./chicken_summary.csv"

    dbms=csv replace;

  run;

%mend export_summary;


11) Example macro calls (actual runs)

%state_report(st=Telangana);

Output:

The MEANS Procedure

VariableNMeanMedianMinimumMaximum
PricePerKg
WeightKg
SalesQty
Revenue
5
5
5
5
245.0000000
1.1400000
8.4000000
2050.00
230.0000000
1.0000000
6.0000000
1380.00
195.0000000
0.8000000
2.0000000
440.0000000
320.0000000
1.8000000
20.0000000
5200.00

Sample records for state Telangana

ObsRecordIDTypeBreedCutTypeFeedTypeMarketStateSellerTypeProcessingPlantCertDateSoldWeightKgPricePerKgVaccinatedOrganicPackagedSalesQtyRevenue
11BroilerVenky BroilerWholeCommercialSecunderabadTelanganaRetailPlantAAGMARK2025-06-021.8195YesNoNo101950.00
22LayerDesi LayerWholeGrain-fedHyderabadTelanganaBackyardPlantBNoCert2025-06-031.2220YesYesNo2440.00
33CountryDesi CountryLegsFree-rangeWarangalTelanganaWholesalePlantCNoCert2025-06-050.9260YesYesNo205200.00
49BroilerSilver BroilerLegsCommercialSecunderabadTelanganaRetailPlantAAGMARK2025-06-091.0230YesNoYes61380.00
510Free-rangeDesi FreeBreastFree-rangeHyderabadTelanganaSupermarketPlantDISO2025-06-100.8320YesYesYes41280.00

%batch_states(states_list=Telangana Maharashtra Andhra Pradesh Uttar Pradesh);

Output:

The MEANS Procedure

VariableNMeanMedianMinimumMaximum
PricePerKg
WeightKg
SalesQty
Revenue
5
5
5
5
245.0000000
1.1400000
8.4000000
2050.00
230.0000000
1.0000000
6.0000000
1380.00
195.0000000
0.8000000
2.0000000
440.0000000
320.0000000
1.8000000
20.0000000
5200.00

Sample records for state Telangana

ObsRecordIDTypeBreedCutTypeFeedTypeMarketStateSellerTypeProcessingPlantCertDateSoldWeightKgPricePerKgVaccinatedOrganicPackagedSalesQtyRevenue
11BroilerVenky BroilerWholeCommercialSecunderabadTelanganaRetailPlantAAGMARK2025-06-021.8195YesNoNo101950.00
22LayerDesi LayerWholeGrain-fedHyderabadTelanganaBackyardPlantBNoCert2025-06-031.2220YesYesNo2440.00
33CountryDesi CountryLegsFree-rangeWarangalTelanganaWholesalePlantCNoCert2025-06-050.9260YesYesNo205200.00
49BroilerSilver BroilerLegsCommercialSecunderabadTelanganaRetailPlantAAGMARK2025-06-091.0230YesNoYes61380.00
510Free-rangeDesi FreeBreastFree-rangeHyderabadTelanganaSupermarketPlantDISO2025-06-100.8320YesYesYes41280.00

Sample records for state Telangana

The MEANS Procedure

VariableNMeanMedianMinimumMaximum
PricePerKg
WeightKg
SalesQty
Revenue
2
2
2
2
242.5000000
0.9000000
29.0000000
8240.00
242.5000000
0.9000000
29.0000000
8240.00
185.0000000
0.4000000
8.0000000
1480.00
300.0000000
1.4000000
50.0000000
15000.00

Sample records for state Maharashtra

ObsRecordIDTypeBreedCutTypeFeedTypeMarketStateSellerTypeProcessingPlantCertDateSoldWeightKgPricePerKgVaccinatedOrganicPackagedSalesQtyRevenue
15Free-rangeDesi FreeWholeFree-rangeMumbaiMaharashtraWholesalePlantDISO2025-06-061.4300YesYesNo5015000.00
26BroilerVenky BroilerWingsCommercialPuneMaharashtraRetailPlantAAGMARK2025-06-070.4185YesNoNo81480.00

%export_summary(outpath=/home/user);


12) Graphs (visualization)

purpose: PROC SGPLOT draws charts (bar/line/scatter) to visualize patterns quickly. 

proc sgplot data=chicken_india;

  vbar Type / response=SalesQty stat=sum datalabel;

  title "Total SalesQty by Type";

run;

Output:



13) Merge / join examples (combine with a plant lookup table)

data plants;

  infile datalines dlm=',' dsd truncover;

  length ProcessingPlant $20 PlantCity $20 Capacity 8;

  input ProcessingPlant $ PlantCity $ Capacity;

datalines;

PlantA,Hyderabad,1000

PlantB,Chennai,500

PlantC,Secunderabad,200

PlantD,Mumbai,800

PlantE,Delhi,600

;

run;

proc print;run;

Output:

ObsProcessingPlantPlantCityCapacity
1PlantAHyderabad1000
2PlantBChennai500
3PlantCSecunderabad200
4PlantDMumbai800
5PlantEDelhi600

proc sort data=chicken_india out=chick_s; by ProcessingPlant; run;

proc sort data=plants out=plants_s; by ProcessingPlant; run;


purpose: DATA step merge joins datasets by key to append plant metadata. 


data chick_with_plant;

  merge chick_s(in=a) plants_s(in=b);

  by ProcessingPlant;

  if a;

run;


proc print data=chick_with_plant(obs=10);

run;

Output:

ObsRecordIDTypeBreedCutTypeFeedTypeMarketStateSellerTypeProcessingPlantCertDateSoldWeightKgPricePerKgVaccinatedOrganicPackagedSalesQtyPlantCityCapacity
11BroilerVenky BroilerWholeCommercialSecunderabadTelanganaRetailPlantAAGMARK2025-06-021.80195YesNoNo10Hyderabad1000
24BroilerSilver BroilerBreastCommercialVijayawadaAndhra PradeshRetailPlantAAGMARK2025-06-050.70250YesNoYes5Hyderabad1000
36BroilerVenky BroilerWingsCommercialPuneMaharashtraRetailPlantAAGMARK2025-06-070.40185YesNoNo8Hyderabad1000
49BroilerSilver BroilerLegsCommercialSecunderabadTelanganaRetailPlantAAGMARK2025-06-091.00230YesNoYes6Hyderabad1000
511BroilerVenky BroilerWholeCommercialVisakhapatnamAndhra PradeshWholesalePlantAAGMARK2025-06-111.50200YesNoNo30Hyderabad1000
615BroilerSilver BroilerBreastCommercialPatnaBiharSupermarketPlantAAGMARK2025-06-140.95240YesNoYes9Hyderabad1000
716BroilerVenky BroilerLegsCommercialBhubaneswarOdishaWholesalePlantAAGMARK2025-06-151.20210YesNoNo22Hyderabad1000
820BroilerSilver BroilerWholeCommercialBhopalMadhya PradeshRetailPlantAAGMARK2025-06-172.10190YesNoNo11Hyderabad1000
923BroilerVenky BroilerBreastCommercialAgraUttar PradeshWholesalePlantAAGMARK2025-06-190.85205YesNoNo27Hyderabad1000
1026BroilerSilver BroilerLegsCommercialChandigarhChandigarhWholesalePlantAAGMARK2025-06-201.40225YesNoNo15Hyderabad1000


14) Data extracts and export

purpose: PROC EXPORT writes datasets to external files (CSV, XLSX) for sharing or downstream systems. 

proc export data=top_sales

  outfile="/home/user/top_chicken_sales.csv"

  dbms=csv replace;

run;


15) Validation and checks (example QC report macro)

purpose: %qc_report summarizes key data quality metrics and categorical completeness. 

%macro qc_report();

  proc sql;

    select count(*) as TotalRec, sum(case when PricePerKg<=0 then 1 else 0 end) as PriceBad,

           sum(case when WeightKg<=0 then 1 else 0 end) as WeightZero

    from chicken_india;

  quit;


  proc freq data=chicken_india;

    tables Cert Packaged Vaccinated Organic / missing;

  run;

%mend qc_report;


%qc_report();

Output:
TotalRecPriceBadWeightZero
3600

The FREQ Procedure

CertFrequencyPercentCumulative
Frequency
Cumulative
Percent
AGMARK1336.111336.11
FSSAI616.671952.78
ISO822.222775.00
NoCert925.0036100.00
PackagedFrequencyPercentCumulative
Frequency
Cumulative
Percent
No2877.782877.78
Yes822.2236100.00
VaccinatedFrequencyPercentCumulative
Frequency
Cumulative
Percent
Yes36100.0036100.00
OrganicFrequencyPercentCumulative
Frequency
Cumulative
Percent
No1952.781952.78
Yes1747.2236100.00





To Visit My Previous Proc  Means And Nway Option:Click Here
To Visit My Previous Proc Means And CharType Option:Click Here
To Visit My Previous SAS Functions:Click Here
To Visit My Previous Length Statement Using In Many Ways:Click Here








--- 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