Saturday, 27 December 2025

352.SAFARI ZONES DATA ANALYSIS USING SAS DATA STEP | PROC SQL | PROC MEANS | PROC UNIVARIATE | PROC SGPLOT | MACROS | DATE FUNCTIONS | APPEND | MERGE | TRANSPOSE

SAFARI ZONES DATA ANALYSIS USING SAS DATA STEP | PROC SQL | PROC MEANS | PROC UNIVARIATE | PROC SGPLOT | MACROS | DATE FUNCTIONS | APPEND | MERGE | TRANSPOSE

 options nocenter;

1.CREATING THE SAFARI ZONES DATASET 

data safari_zones;

    length Zone_Name $25;

    format Start_Date Review_Date date9.;

    input Zone_Name $ Animals_Count Tourists Area_Size Revenue Safety_Index 

          Start_Date :date9.;

          Review_Date = intnx('year', Start_Date, 1, 'same');

    datalines;

Ranthambore 1200 450000 392 85 82 01JAN2015

JimCorbett 1500 520000 520 95 88 15MAR2014

Kaziranga 1800 610000 430 110 90 20FEB2016

GirForest 900 380000 1412 70 85 10APR2013

Bandipur 1100 410000 874 78 80 05MAY2015

Sundarbans 1600 470000 4262 105 75 12JUN2012

Periyar 950 290000 925 60 83 18JUL2016

Tadoba 1250 340000 625 72 86 09AUG2017

Nagarhole 1150 360000 643 74 84 23SEP2014

Pench 980 310000 758 65 81 11OCT2015

Manas 1350 330000 950 68 78 14NOV2013

Satpura 1050 270000 524 55 79 19DEC2016

;

run;

proc print data=safari_zones;

run;

OUTPUT:

ObsZone_NameStart_DateReview_DateAnimals_CountTouristsArea_SizeRevenueSafety_Index
1Ranthambore01JAN201501JAN201612004500003928582
2JimCorbett15MAR201415MAR201515005200005209588
3Kaziranga20FEB201620FEB2017180061000043011090
4GirForest10APR201310APR201490038000014127085
5Bandipur05MAY201505MAY201611004100008747880
6Sundarbans12JUN201212JUN20131600470000426210575
7Periyar18JUL201618JUL20179502900009256083
8Tadoba09AUG201709AUG201812503400006257286
9Nagarhole23SEP201423SEP201511503600006437484
10Pench11OCT201511OCT20169803100007586581
11Manas14NOV201314NOV201413503300009506878
12Satpura19DEC201619DEC201710502700005245579


2.USING MDY AND INTCK FOR DATE ANALYSIS

data safari_dates;

    set safari_zones;

    Fiscal_Start = mdy(4,1,year(Start_Date));

    Years_Active = intck('year', Start_Date, today());

    format Fiscal_Start date9.;

run;

proc print data=safari_dates;

run;

OUTPUT:

ObsZone_NameStart_DateReview_DateAnimals_CountTouristsArea_SizeRevenueSafety_IndexFiscal_StartYears_Active
1Ranthambore01JAN201501JAN20161200450000392858201APR201510
2JimCorbett15MAR201415MAR20151500520000520958801APR201411
3Kaziranga20FEB201620FEB201718006100004301109001APR20169
4GirForest10APR201310APR20149003800001412708501APR201312
5Bandipur05MAY201505MAY20161100410000874788001APR201510
6Sundarbans12JUN201212JUN2013160047000042621057501APR201213
7Periyar18JUL201618JUL2017950290000925608301APR20169
8Tadoba09AUG201709AUG20181250340000625728601APR20178
9Nagarhole23SEP201423SEP20151150360000643748401APR201411
10Pench11OCT201511OCT2016980310000758658101APR201510
11Manas14NOV201314NOV20141350330000950687801APR201312
12Satpura19DEC201619DEC20171050270000524557901APR20169


3.DATA VALIDATION USING PROC CONTENTS AND PRINT

proc contents data=safari_dates;

run;

OUTPUT:

The CONTENTS Procedure

Data Set NameWORK.SAFARI_DATESObservations12
Member TypeDATAVariables10
EngineV9Indexes0
Created12/28/2025 08:05:23Observation Length104
Last Modified12/28/2025 08:05:23Deleted 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 Page1258
Obs in First Data Page12
Number of Data Set Repairs0
Filename/saswork/SAS_work3EB20001C611_odaws01-apse1-2.oda.sas.com/SAS_work5F2E0001C611_odaws01-apse1-2.oda.sas.com/safari_dates.sas7bdat
Release Created9.0401M8
Host CreatedLinux
Inode Number1207862
Access Permissionrw-r--r--
Owner Nameu63247146
File Size256KB
File Size (bytes)262144
Alphabetic List of Variables and Attributes
#VariableTypeLenFormat
4Animals_CountNum8 
6Area_SizeNum8 
9Fiscal_StartNum8DATE9.
7RevenueNum8 
3Review_DateNum8DATE9.
8Safety_IndexNum8 
2Start_DateNum8DATE9.
5TouristsNum8 
10Years_ActiveNum8 
1Zone_NameChar25 

proc print data=safari_dates(obs=5);

run;

OUTPUT:

ObsZone_NameStart_DateReview_DateAnimals_CountTouristsArea_SizeRevenueSafety_IndexFiscal_StartYears_Active
1Ranthambore01JAN201501JAN20161200450000392858201APR201510
2JimCorbett15MAR201415MAR20151500520000520958801APR201411
3Kaziranga20FEB201620FEB201718006100004301109001APR20169
4GirForest10APR201310APR20149003800001412708501APR201312
5Bandipur05MAY201505MAY20161100410000874788001APR201510


4.DATA ANALYSIS USING PROC SQL

proc sql;

    create table safari_sql as

    select Zone_Name,Animals_Count,Tourists,Area_Size,Revenue,Safety_Index,Years_Active,

            (Revenue / Area_Size) as Revenue_Density

    from safari_dates

    where Safety_Index > 80

    order by Revenue desc;

quit;

proc print data=safari_sql;

run;

OUTPUT:

ObsZone_NameAnimals_CountTouristsArea_SizeRevenueSafety_IndexYears_ActiveRevenue_Density
1Kaziranga18006100004301109090.25581
2JimCorbett15005200005209588110.18269
3Ranthambore12004500003928582100.21684
4Nagarhole11503600006437484110.11509
5Tadoba1250340000625728680.11520
6GirForest90038000014127085120.04958
7Pench9803100007586581100.08575
8Periyar950290000925608390.06486


5.STATISTICAL SUMMARY USING PROC MEANS

proc means data=safari_zones mean min max sum;

    var Animals_Count Tourists Area_Size Revenue Safety_Index;

run;

OUTPUT:

The MEANS Procedure

VariableMeanMinimumMaximumSum
Animals_Count
Tourists
Area_Size
Revenue
Safety_Index
1235.83
395000.00
1026.25
78.0833333
82.5833333
900.0000000
270000.00
392.0000000
55.0000000
75.0000000
1800.00
610000.00
4262.00
110.0000000
90.0000000
14830.00
4740000.00
12315.00
937.0000000
991.0000000

6.DISTRIBUTION ANALYSIS USING PROC UNIVARIATE

proc univariate data=safari_zones;

    var Revenue Safety_Index;

    histogram Revenue Safety_Index;

run;

OUTPUT:

The UNIVARIATE Procedure

Variable: Revenue

Moments
N12Sum Weights12
Mean78.0833333Sum Observations937
Std Deviation17.3962291Variance302.628788
Skewness0.72290943Kurtosis-0.4490746
Uncorrected SS76493Corrected SS3328.91667
Coeff Variation22.2790554Std Error Mean5.02185879
Basic Statistical Measures
LocationVariability
Mean78.08333Std Deviation17.39623
Median73.00000Variance302.62879
Mode.Range55.00000
  Interquartile Range23.50000
Tests for Location: Mu0=0
TestStatisticp Value
Student's tt15.54869Pr > |t|<.0001
SignM6Pr >= |M|0.0005
Signed RankS39Pr >= |S|0.0005
Quantiles (Definition 5)
LevelQuantile
100% Max110.0
99%110.0
95%110.0
90%105.0
75% Q390.0
50% Median73.0
25% Q166.5
10%60.0
5%55.0
1%55.0
0% Min55.0
Extreme Observations
LowestHighest
ValueObsValueObs
5512785
607851
6510952
68111056
7041103

The UNIVARIATE Procedure

Histogram for Revenue

The UNIVARIATE Procedure

Variable: Safety_Index

Moments
N12Sum Weights12
Mean82.5833333Sum Observations991
Std Deviation4.31610795Variance18.6287879
Skewness0.03258173Kurtosis-0.3893496
Uncorrected SS82045Corrected SS204.916667
Coeff Variation5.22636685Std Error Mean1.24595304
Basic Statistical Measures
LocationVariability
Mean82.58333Std Deviation4.31611
Median82.50000Variance18.62879
Mode.Range15.00000
  Interquartile Range6.00000
Tests for Location: Mu0=0
TestStatisticp Value
Student's tt66.28126Pr > |t|<.0001
SignM6Pr >= |M|0.0005
Signed RankS39Pr >= |S|0.0005
Quantiles (Definition 5)
LevelQuantile
100% Max90.0
99%90.0
95%90.0
90%88.0
75% Q385.5
50% Median82.5
25% Q179.5
10%78.0
5%75.0
1%75.0
0% Min75.0
Extreme Observations
LowestHighest
ValueObsValueObs
756849
7811854
7912868
805882
8110903

The UNIVARIATE Procedure

Histogram for Safety_Index

7.VISUAL ANALYSIS USING PROC SGPLOT

proc sgplot data=safari_zones;

    scatter x=Area_Size y=Revenue;

    title "Revenue vs Area Size for Safari Zones";

run;

OUTPUT:

The SGPlot Procedure


8.MACRO FOR SAFARI ZONE RATING

%macro zone_rating;

data safari_rated;

    set safari_zones;

    length Zone_Rating $12;

    if Safety_Index >= 85 then Zone_Rating = "EXCELLENT";

    else if Safety_Index >= 80 then Zone_Rating = "GOOD";

    else if Safety_Index >= 75 then Zone_Rating = "MODERATE";

    else Zone_Rating = "RISKY";

run;

proc print data=safari_rated;

run;

%mend;


%zone_rating;

OUTPUT:

ObsZone_NameStart_DateReview_DateAnimals_CountTouristsArea_SizeRevenueSafety_IndexZone_Rating
1Ranthambore01JAN201501JAN201612004500003928582GOOD
2JimCorbett15MAR201415MAR201515005200005209588EXCELLENT
3Kaziranga20FEB201620FEB2017180061000043011090EXCELLENT
4GirForest10APR201310APR201490038000014127085EXCELLENT
5Bandipur05MAY201505MAY201611004100008747880GOOD
6Sundarbans12JUN201212JUN20131600470000426210575MODERATE
7Periyar18JUL201618JUL20179502900009256083GOOD
8Tadoba09AUG201709AUG201812503400006257286EXCELLENT
9Nagarhole23SEP201423SEP201511503600006437484GOOD
10Pench11OCT201511OCT20169803100007586581GOOD
11Manas14NOV201314NOV201413503300009506878MODERATE
12Satpura19DEC201619DEC201710502700005245579MODERATE


9.DATA APPEND OPERATION

data new_zone;

    length Zone_Name $25;

    format Start_Date date9.;

    Zone_Name="Valmiki";

    Animals_Count=850;

    Tourists=220000;

    Area_Size=335;

    Revenue=48;

    Safety_Index=77;

    Start_Date='01JAN2018'd;

run;

proc print data=new_zone;

run;

OUTPUT:

ObsZone_NameStart_DateAnimals_CountTouristsArea_SizeRevenueSafety_Index
1Valmiki01JAN20188502200003354877


proc append base=safari_zones 

            data=new_zone force;

run;

proc print data=safari_zones;

run;

OUTPUT:

ObsZone_NameStart_DateReview_DateAnimals_CountTouristsArea_SizeRevenueSafety_Index
1Ranthambore01JAN201501JAN201612004500003928582
2JimCorbett15MAR201415MAR201515005200005209588
3Kaziranga20FEB201620FEB2017180061000043011090
4GirForest10APR201310APR201490038000014127085
5Bandipur05MAY201505MAY201611004100008747880
6Sundarbans12JUN201212JUN20131600470000426210575
7Periyar18JUL201618JUL20179502900009256083
8Tadoba09AUG201709AUG201812503400006257286
9Nagarhole23SEP201423SEP201511503600006437484
10Pench11OCT201511OCT20169803100007586581
11Manas14NOV201314NOV201413503300009506878
12Satpura19DEC201619DEC201710502700005245579
13Valmiki01JAN2018.8502200003354877


10.MERGE OPERATION

proc sort data=safari_zones; by Zone_Name; run;

proc print data=safari_zones;

run;

OUTPUT:

ObsZone_NameStart_DateReview_DateAnimals_CountTouristsArea_SizeRevenueSafety_Index
1Bandipur05MAY201505MAY201611004100008747880
2GirForest10APR201310APR201490038000014127085
3JimCorbett15MAR201415MAR201515005200005209588
4Kaziranga20FEB201620FEB2017180061000043011090
5Manas14NOV201314NOV201413503300009506878
6Nagarhole23SEP201423SEP201511503600006437484
7Pench11OCT201511OCT20169803100007586581
8Periyar18JUL201618JUL20179502900009256083
9Ranthambore01JAN201501JAN201612004500003928582
10Satpura19DEC201619DEC201710502700005245579
11Sundarbans12JUN201212JUN20131600470000426210575
12Tadoba09AUG201709AUG201812503400006257286
13Valmiki01JAN2018.8502200003354877


proc sort data=safari_rated; by Zone_Name; run;

proc print data=safari_rated;

run;

OUTPUT:

ObsZone_NameStart_DateReview_DateAnimals_CountTouristsArea_SizeRevenueSafety_IndexZone_Rating
1Bandipur05MAY201505MAY201611004100008747880GOOD
2GirForest10APR201310APR201490038000014127085EXCELLENT
3JimCorbett15MAR201415MAR201515005200005209588EXCELLENT
4Kaziranga20FEB201620FEB2017180061000043011090EXCELLENT
5Manas14NOV201314NOV201413503300009506878MODERATE
6Nagarhole23SEP201423SEP201511503600006437484GOOD
7Pench11OCT201511OCT20169803100007586581GOOD
8Periyar18JUL201618JUL20179502900009256083GOOD
9Ranthambore01JAN201501JAN201612004500003928582GOOD
10Satpura19DEC201619DEC201710502700005245579MODERATE
11Sundarbans12JUN201212JUN20131600470000426210575MODERATE
12Tadoba09AUG201709AUG201812503400006257286EXCELLENT


data safari_merged;

    merge safari_zones safari_rated;

    by Zone_Name;

run;

proc print data=safari_merged;

run;

OUTPUT:

ObsZone_NameStart_DateReview_DateAnimals_CountTouristsArea_SizeRevenueSafety_IndexZone_Rating
1Bandipur05MAY201505MAY201611004100008747880GOOD
2GirForest10APR201310APR201490038000014127085EXCELLENT
3JimCorbett15MAR201415MAR201515005200005209588EXCELLENT
4Kaziranga20FEB201620FEB2017180061000043011090EXCELLENT
5Manas14NOV201314NOV201413503300009506878MODERATE
6Nagarhole23SEP201423SEP201511503600006437484GOOD
7Pench11OCT201511OCT20169803100007586581GOOD
8Periyar18JUL201618JUL20179502900009256083GOOD
9Ranthambore01JAN201501JAN201612004500003928582GOOD
10Satpura19DEC201619DEC201710502700005245579MODERATE
11Sundarbans12JUN201212JUN20131600470000426210575MODERATE
12Tadoba09AUG201709AUG201812503400006257286EXCELLENT
13Valmiki01JAN2018.8502200003354877 


11.TRANSPOSE OPERATION

proc transpose data=safari_zones out=safari_transposed prefix=Zone_;

    var Revenue;

    id Zone_Name;

run;

proc print data=safari_transposed;

run;

OUTPUT:

Obs_NAME_Zone_BandipurZone_GirForestZone_JimCorbettZone_KazirangaZone_ManasZone_NagarholeZone_PenchZone_PeriyarZone_RanthamboreZone_SatpuraZone_SundarbansZone_TadobaZone_Valmiki
1Revenue7870951106874656085551057248


12.PROC MEANS

proc means data=safari_zones;

    var Animals_Count Tourists Revenue;

    group by Zone_Name;

run;

/* Note: In practice above there is an Invalid in this code Find it,Correct it and Use it /*

OUTPUT:

The MEANS Procedure

Zone_NameN ObsVariableNMeanStd DevMinimumMaximum
Bandipur1
Animals_Count
Tourists
Revenue
1
1
1
1100.00
410000.00
78.0000000
.
.
.
1100.00
410000.00
78.0000000
1100.00
410000.00
78.0000000
GirForest1
Animals_Count
Tourists
Revenue
1
1
1
900.0000000
380000.00
70.0000000
.
.
.
900.0000000
380000.00
70.0000000
900.0000000
380000.00
70.0000000
JimCorbett1
Animals_Count
Tourists
Revenue
1
1
1
1500.00
520000.00
95.0000000
.
.
.
1500.00
520000.00
95.0000000
1500.00
520000.00
95.0000000
Kaziranga1
Animals_Count
Tourists
Revenue
1
1
1
1800.00
610000.00
110.0000000
.
.
.
1800.00
610000.00
110.0000000
1800.00
610000.00
110.0000000
Manas1
Animals_Count
Tourists
Revenue
1
1
1
1350.00
330000.00
68.0000000
.
.
.
1350.00
330000.00
68.0000000
1350.00
330000.00
68.0000000
Nagarhole1
Animals_Count
Tourists
Revenue
1
1
1
1150.00
360000.00
74.0000000
.
.
.
1150.00
360000.00
74.0000000
1150.00
360000.00
74.0000000
Pench1
Animals_Count
Tourists
Revenue
1
1
1
980.0000000
310000.00
65.0000000
.
.
.
980.0000000
310000.00
65.0000000
980.0000000
310000.00
65.0000000
Periyar1
Animals_Count
Tourists
Revenue
1
1
1
950.0000000
290000.00
60.0000000
.
.
.
950.0000000
290000.00
60.0000000
950.0000000
290000.00
60.0000000
Ranthambore1
Animals_Count
Tourists
Revenue
1
1
1
1200.00
450000.00
85.0000000
.
.
.
1200.00
450000.00
85.0000000
1200.00
450000.00
85.0000000
Satpura1
Animals_Count
Tourists
Revenue
1
1
1
1050.00
270000.00
55.0000000
.
.
.
1050.00
270000.00
55.0000000
1050.00
270000.00
55.0000000
Sundarbans1
Animals_Count
Tourists
Revenue
1
1
1
1600.00
470000.00
105.0000000
.
.
.
1600.00
470000.00
105.0000000
1600.00
470000.00
105.0000000
Tadoba1
Animals_Count
Tourists
Revenue
1
1
1
1250.00
340000.00
72.0000000
.
.
.
1250.00
340000.00
72.0000000
1250.00
340000.00
72.0000000
Valmiki1
Animals_Count
Tourists
Revenue
1
1
1
850.0000000
220000.00
48.0000000
.
.
.
850.0000000
220000.00
48.0000000
850.0000000
220000.00
48.0000000




To Visit My Previous Online Streaming Flatform Dataset:Click Here
To Visit My Previous Statistical Evaluation Of Clinical Trials:Click Here
To Visit My Previous Unlocking Retail Insights Dataset:Click Here
To Visit My Previous Sas Interview Questions-1:Click Here  



Follow Us On : 


 


--- FOLLOW OUR BLOG FOR MORE INFORMATION.

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






No comments:

Post a Comment