Wednesday, 3 December 2025

328.WORLD TOURIST PLACES DATA CREATION AND ANALYSIS USING PROC SQL | PROC MEANS | PROC FORMAT | PROC UNIVARIATE | PROC SGPLOT | MACROS WITH DATE FUNCTIONS

WORLD TOURIST PLACES DATA CREATION AND ANALYSIS USING PROC SQL | PROC MEANS | PROC FORMAT | PROC UNIVARIATE | PROC SGPLOT | MACROS WITH DATE FUNCTIONS

options nocenter;

1) CREATE BASE DATASET WITH 12 WORLD TOURIST PLACES

data work.world_tourist_places_raw;

    length Place_Name $40 Country $25 Best_Season $15 Activities $60;

    format Booking_Date Start_Date End_Date date9. Start_Month monyy7.;

    informat Booking_Date date9.;

    infile datalines truncover;

    input Place_Name :$40. Country :$25. Annual_Visitors Average_Expense Best_Season :$15.

          Safety_Score Activities  :$60. Booking_Date :date9.;


    /* Derived travel dates */

    Start_Date = intnx('month', Booking_Date, 1, 'b');  /* 1st of next month */

    End_Date   = intnx('day', Start_Date, 6, 'same');   /* 7-day trip */

    Trip_Duration_Days = End_Date - Start_Date + 1;

    Days_Between_Book_And_Trip = intck('day', Booking_Date, Start_Date);

    Start_Month = Start_Date;

datalines;

Eiffel_Tower_Paris              France        7000000 1500 Spring-Summer 8 City_viewing|Museum_visits           01JAN2025

Grand_Canyon_National_Park      USA           4500000 1200 Spring-Autumn 9 Hiking|Photography|Camping           15FEB2025

Taj_Mahal_Agra                  India         8000000 800  Winter        7 Heritage_tour|Street_food           10NOV2024

Great_Wall_Beijing              China         9000000 1000 Spring-Autumn 7 Hiking|Cultural_exploration         20MAR2025

Santorini_Islands               Greece        2000000 1800 Summer        8 Beaches|Sunsets|Boat_trips          05APR2025

Machu_Picchu_Citadel            Peru          1500000 1600 Dry_Season    9 Trekking|Inca_ruins                 28AUG2024

Bali_Beach_Resorts              Indonesia     6000000 1100 Summer-Autumn 6 Surfing|Yoga|Nightlife               03MAY2025

Dubai_Burj_Khalifa              UAE           6500000 1900 Winter        9 Shopping|Skydeck|Desert_safari      18DEC2024

Singapore_Marina_Bay            Singapore     5000000 1700 All_Year      9 City_tours|Gardens|Night_safari     23JAN2025

New_York_Times_Square           USA          12000000 2000 Winter-NewYear 8 Shopping|Broadway|NYE_countdown    10DEC2024

Tokyo_Shibuya_Crossing          Japan         5500000 1600 Spring-Autumn 9 City_life|Anime_culture|Shopping    12MAR2025

Sydney_Opera_House              Australia     3000000 1500 Spring-Summer 8 Opera|Harbour_cruises|City_walks    01SEP2024

;

run;

proc print data=work.world_tourist_places_raw;

run;

OUTPUT:

ObsPlace_NameCountryBest_SeasonActivitiesBooking_DateStart_DateEnd_DateStart_MonthAnnual_VisitorsAverage_ExpenseSafety_ScoreTrip_Duration_DaysDays_Between_Book_And_Trip
1Eiffel_Tower_ParisFranceSpring-SummerCity_viewing|Museum_visits01JAN202501FEB202507FEB2025FEB2025700000015008731
2Grand_Canyon_National_ParkUSASpring-AutumnHiking|Photography|Camping15FEB202501MAR202507MAR2025MAR2025450000012009714
3Taj_Mahal_AgraIndiaWinterHeritage_tour|Street_food10NOV202401DEC202407DEC2024DEC202480000008007721
4Great_Wall_BeijingChinaSpring-AutumnHiking|Cultural_exploration20MAR202501APR202507APR2025APR2025900000010007712
5Santorini_IslandsGreeceSummerBeaches|Sunsets|Boat_trips05APR202501MAY202507MAY2025MAY2025200000018008726
6Machu_Picchu_CitadelPeruDry_SeasonTrekking|Inca_ruins28AUG202401SEP202407SEP2024SEP202415000001600974
7Bali_Beach_ResortsIndonesiaSummer-AutumnSurfing|Yoga|Nightlife03MAY202501JUN202507JUN2025JUN2025600000011006729
8Dubai_Burj_KhalifaUAEWinterShopping|Skydeck|Desert_safari18DEC202401JAN202507JAN2025JAN2025650000019009714
9Singapore_Marina_BaySingaporeAll_YearCity_tours|Gardens|Night_safari23JAN202501FEB202507FEB2025FEB202550000001700979
10New_York_Times_SquareUSAWinter-NewYearShopping|Broadway|NYE_countdown10DEC202401JAN202507JAN2025JAN20251200000020008722
11Tokyo_Shibuya_CrossingJapanSpring-AutumnCity_life|Anime_culture|Shopping12MAR202501APR202507APR2025APR2025550000016009720
12Sydney_Opera_HouseAustraliaSpring-SummerOpera|Harbour_cruises|City_walks01SEP202401OCT202407OCT2024OCT2024300000015008730


2) DEFINE FORMATS FOR SEASONS, SAFETY AND VISITOR SCALE 

proc format;

  value safetyfmt

    1 - 4 = 'Low'

    5 - 7 = 'Medium'

    8 - 10 = 'High';

LOG:

NOTE: Format SAFETYFMT has been output.

  value visitorscale

    0 - 1999999   = 'Low_traffic'

    2000000 - 5999999 = 'Medium_traffic'

    6000000 - 9999999 = 'High_traffic'

    10000000 - high   = 'Very_high_traffic';

LOG:

NOTE: Format VISITORSCALE has been output.

  value $seasonfmt

    'Winter'         = 'Cool_Winter'

    'Spring-Summer'  = 'Pleasant_Spring_to_Summer'

    'Spring-Autumn'  = 'Mild_Spring_to_Autumn'

    'Summer'         = 'Hot_Summer'

    'Dry_Season'     = 'Dry_Season_(Andes)'

    'Summer-Autumn'  = 'Warm_Summer_to_Autumn'

    'All_Year'       = 'All_Year_Round'

    'Winter-NewYear' = 'Winter_and_New_Year';

run;

LOG:

NOTE: Format $SEASONFMT has been output.

3) ENRICH DATASET WITH CATEGORICAL VARIABLES USING PROC SQL  

/*Also apply formats */

proc sql;

  create table work.world_tourist_enriched as

  select  Place_Name,Country,Annual_Visitors,Average_Expense,Best_Season,Safety_Score,

          Activities,Booking_Date,Start_Date,End_Date,Trip_Duration_Days,

          Days_Between_Book_And_Trip,Start_Month,put(Safety_Score, safetyfmt.) 

          as Safety_Category length=12,put(Annual_Visitors, visitorscale.) as 

          Visitor_Traffic length=18,

          put(Best_Season, $seasonfmt.) as Season_Desc length=30,

          /* Simple expense category */

          case 

            when Average_Expense < 1000 then 'Budget'

            when 1000 <= Average_Expense < 1700 then 'Mid_Range'

            else 'Luxury'

          end as Expense_Category length=10

  from work.world_tourist_places_raw

  ;

quit;

proc print data=work.world_tourist_enriched;

run;

OUTPUT:

ObsPlace_NameCountryAnnual_VisitorsAverage_ExpenseBest_SeasonSafety_ScoreActivitiesBooking_DateStart_DateEnd_DateTrip_Duration_DaysDays_Between_Book_And_TripStart_MonthSafety_CategoryVisitor_TrafficSeason_DescExpense_Category
1Eiffel_Tower_ParisFrance70000001500Spring-Summer8City_viewing|Museum_visits01JAN202501FEB202507FEB2025731FEB2025HighHigh_trafficPleasant_Spring_to_SummerMid_Range
2Grand_Canyon_National_ParkUSA45000001200Spring-Autumn9Hiking|Photography|Camping15FEB202501MAR202507MAR2025714MAR2025HighMedium_trafficMild_Spring_to_AutumnMid_Range
3Taj_Mahal_AgraIndia8000000800Winter7Heritage_tour|Street_food10NOV202401DEC202407DEC2024721DEC2024MediumHigh_trafficCool_WinterBudget
4Great_Wall_BeijingChina90000001000Spring-Autumn7Hiking|Cultural_exploration20MAR202501APR202507APR2025712APR2025MediumHigh_trafficMild_Spring_to_AutumnMid_Range
5Santorini_IslandsGreece20000001800Summer8Beaches|Sunsets|Boat_trips05APR202501MAY202507MAY2025726MAY2025HighMedium_trafficHot_SummerLuxury
6Machu_Picchu_CitadelPeru15000001600Dry_Season9Trekking|Inca_ruins28AUG202401SEP202407SEP202474SEP2024HighLow_trafficDry_Season_(Andes)Mid_Range
7Bali_Beach_ResortsIndonesia60000001100Summer-Autumn6Surfing|Yoga|Nightlife03MAY202501JUN202507JUN2025729JUN2025MediumHigh_trafficWarm_Summer_to_AutumnMid_Range
8Dubai_Burj_KhalifaUAE65000001900Winter9Shopping|Skydeck|Desert_safari18DEC202401JAN202507JAN2025714JAN2025HighHigh_trafficCool_WinterLuxury
9Singapore_Marina_BaySingapore50000001700All_Year9City_tours|Gardens|Night_safari23JAN202501FEB202507FEB202579FEB2025HighMedium_trafficAll_Year_RoundLuxury
10New_York_Times_SquareUSA120000002000Winter-NewYear8Shopping|Broadway|NYE_countdown10DEC202401JAN202507JAN2025722JAN2025HighVery_high_trafficWinter_and_New_YearLuxury
11Tokyo_Shibuya_CrossingJapan55000001600Spring-Autumn9City_life|Anime_culture|Shopping12MAR202501APR202507APR2025720APR2025HighMedium_trafficMild_Spring_to_AutumnMid_Range
12Sydney_Opera_HouseAustralia30000001500Spring-Summer8Opera|Harbour_cruises|City_walks01SEP202401OCT202407OCT2024730OCT2024HighMedium_trafficPleasant_Spring_to_SummerMid_Range


4) PROC MEANS: BASIC STATISTICS BY SEASON AND EXPENSE CATEGORY 

proc means data=work.world_tourist_enriched

           mean median min max stddev maxdec=1;

  class Best_Season Expense_Category;

  var Annual_Visitors Average_Expense Trip_Duration_Days;

run;

OUTPUT:

The MEANS Procedure

Best_SeasonExpense_CategoryN ObsVariableMeanMedianMinimumMaximumStd Dev
All_YearLuxury1
Annual_Visitors
Average_Expense
Trip_Duration_Days
5000000.0
1700.0
7.0
5000000.0
1700.0
7.0
5000000.0
1700.0
7.0
5000000.0
1700.0
7.0
.
.
.
Dry_SeasonMid_Range1
Annual_Visitors
Average_Expense
Trip_Duration_Days
1500000.0
1600.0
7.0
1500000.0
1600.0
7.0
1500000.0
1600.0
7.0
1500000.0
1600.0
7.0
.
.
.
Spring-AutumnMid_Range3
Annual_Visitors
Average_Expense
Trip_Duration_Days
6333333.3
1266.7
7.0
5500000.0
1200.0
7.0
4500000.0
1000.0
7.0
9000000.0
1600.0
7.0
2362907.8
305.5
0.0
Spring-SummerMid_Range2
Annual_Visitors
Average_Expense
Trip_Duration_Days
5000000.0
1500.0
7.0
5000000.0
1500.0
7.0
3000000.0
1500.0
7.0
7000000.0
1500.0
7.0
2828427.1
0.0
0.0
SummerLuxury1
Annual_Visitors
Average_Expense
Trip_Duration_Days
2000000.0
1800.0
7.0
2000000.0
1800.0
7.0
2000000.0
1800.0
7.0
2000000.0
1800.0
7.0
.
.
.
Summer-AutumnMid_Range1
Annual_Visitors
Average_Expense
Trip_Duration_Days
6000000.0
1100.0
7.0
6000000.0
1100.0
7.0
6000000.0
1100.0
7.0
6000000.0
1100.0
7.0
.
.
.
WinterBudget1
Annual_Visitors
Average_Expense
Trip_Duration_Days
8000000.0
800.0
7.0
8000000.0
800.0
7.0
8000000.0
800.0
7.0
8000000.0
800.0
7.0
.
.
.
 Luxury1
Annual_Visitors
Average_Expense
Trip_Duration_Days
6500000.0
1900.0
7.0
6500000.0
1900.0
7.0
6500000.0
1900.0
7.0
6500000.0
1900.0
7.0
.
.
.
Winter-NewYearLuxury1
Annual_Visitors
Average_Expense
Trip_Duration_Days
12000000.0
2000.0
7.0
12000000.0
2000.0
7.0
12000000.0
2000.0
7.0
12000000.0
2000.0
7.0
.
.
.

5) PROC UNIVARIATE: DISTRIBUTION OF VISITORS AND EXPENSE      

proc univariate data=work.world_tourist_enriched;

  var Annual_Visitors Average_Expense;

  histogram Annual_Visitors Average_Expense;

run;

OUTPUT:

The UNIVARIATE Procedure

Variable: Annual_Visitors

Moments
N12Sum Weights12
Mean5833333.33Sum Observations70000000
Std Deviation2994945.24Variance8.9697E12
Skewness0.46655187Kurtosis0.28994019
Uncorrected SS5.07E14Corrected SS9.86667E13
Coeff Variation51.3419183Std Error Mean864566.219
Basic Statistical Measures
LocationVariability
Mean5833333Std Deviation2994945
Median5750000Variance8.9697E12
Mode.Range10500000
  Interquartile Range3750000
Tests for Location: Mu0=0
TestStatisticp Value
Student's tt6.747122Pr > |t|<.0001
SignM6Pr >= |M|0.0005
Signed RankS39Pr >= |S|0.0005
Quantiles (Definition 5)
LevelQuantile
100% Max12000000
99%12000000
95%12000000
90%9000000
75% Q37500000
50% Median5750000
25% Q13750000
10%2000000
5%1500000
1%1500000
0% Min1500000
Extreme Observations
LowestHighest
ValueObsValueObs
1500000665000008
2000000570000001
30000001280000003
4500000290000004
500000091200000010

The UNIVARIATE Procedure

Histogram for Annual_Visitors

The UNIVARIATE Procedure

Variable: Average_Expense

Moments
N12Sum Weights12
Mean1475Sum Observations17700
Std Deviation374.469321Variance140227.273
Skewness-0.4510759Kurtosis-0.7734376
Uncorrected SS27650000Corrected SS1542500
Coeff Variation25.3877506Std Error Mean108.099982
Basic Statistical Measures
LocationVariability
Mean1475.000Std Deviation374.46932
Median1550.000Variance140227
Mode1500.000Range1200
  Interquartile Range600.00000

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

Tests for Location: Mu0=0
TestStatisticp Value
Student's tt13.64478Pr > |t|<.0001
SignM6Pr >= |M|0.0005
Signed RankS39Pr >= |S|0.0005
Quantiles (Definition 5)
LevelQuantile
100% Max2000
99%2000
95%2000
90%1900
75% Q31750
50% Median1550
25% Q11150
10%1000
5%800
1%800
0% Min800
Extreme Observations
LowestHighest
ValueObsValueObs
8003160011
1000417009
1100718005
1200219008
150012200010

The UNIVARIATE Procedure

Histogram for Average_Expense

6) PROC SGPLOT: VISUALIZE RELATION BETWEEN EXPENSE & VISITORS  

ods graphics on;

proc sgplot data=work.world_tourist_enriched;

  title "Average Expense vs Annual Visitors by Best Season";

  scatter x=Average_Expense y=Annual_Visitors / group=Best_Season;

  xaxis label="Average Expense per Visitor (USD)";

  yaxis label="Annual Visitors";

run;

OUTPUT:

The SGPlot Procedure


proc sgplot data=work.world_tourist_enriched;

  title "Total Annual Visitors by Country";

  vbar Country / response=Annual_Visitors stat=sum;

  yaxis label="Total Annual Visitors";

run;

ods graphics off;

OUTPUT:

The SGPlot Procedure


7) MACRO FOR TRAVEL RECOMMENDATION CATEGORIES                 

%macro travel_reco(min_budget=, max_budget=, min_safety=, season=);

  title "Travel Recommendations: season=&season min_safety=&min_safety budget=&min_budget to &max_budget";


  data work.travel_candidates;

    set work.world_tourist_enriched;

    where Average_Expense between &min_budget and &max_budget

          and Safety_Score >= &min_safety

          and (upcase(Best_Season) = upcase("&season")

               or upcase("&season") = 'ANY');

  run;


  proc print data=work.travel_candidates noobs;

    var Place_Name Country Best_Season Safety_Score Average_Expense Activities;

  run;

%mend travel_reco;


%travel_reco(min_budget=700, max_budget=1500, min_safety=8, season=Spring-Summer);

OUTPUT:

Travel Recommendations: season=Spring-Summer min_safety=8 budget=700 to 1500

Place_NameCountryBest_SeasonSafety_ScoreAverage_ExpenseActivities
Eiffel_Tower_ParisFranceSpring-Summer81500City_viewing|Museum_visits
Sydney_Opera_HouseAustraliaSpring-Summer81500Opera|Harbour_cruises|City_walks

%travel_reco(min_budget=800, max_budget=1200, min_safety=7, season=ANY);

OUTPUT:

Travel Recommendations: season=ANY min_safety=7 budget=800 to 1200

Place_NameCountryBest_SeasonSafety_ScoreAverage_ExpenseActivities
Grand_Canyon_National_ParkUSASpring-Autumn91200Hiking|Photography|Camping
Taj_Mahal_AgraIndiaWinter7800Heritage_tour|Street_food
Great_Wall_BeijingChinaSpring-Autumn71000Hiking|Cultural_exploration

8) MACRO SHOWING DATE FUNCTIONS (INTCK, INTNX, TODAY)    

%macro date_scenario_report;

  data work.date_scenarios;

    set work.world_tourist_enriched;


    /* Days from booking date to today (report generation date) */

    Days_from_Booking_to_Today = intck('day', Booking_Date, today());


    /* Number of months between booking and trip start */

    Months_Between_Booking_and_Start = intck('month', Booking_Date, Start_Date);


    /* Shift Start_Date by +6 months to simulate re-planned trip */

    Replanned_Start = intnx('month', Start_Date, 6, 'same');

    format Replanned_Start date9.;


    /* Extract year and month for reporting */

    Booking_Year  = year(Booking_Date);

    Booking_Month = month(Booking_Date);


    format Booking_Date Start_Date End_Date date9.

           Start_Month monyy7.;

  run;

  proc print data=work.date_scenarios noobs;

    var Place_Name Country Booking_Date Start_Date End_Date

        Days_from_Booking_to_Today

        Months_Between_Booking_and_Start

        Replanned_Start;

  run;

%mend date_scenario_report;


%date_scenario_report;

OUTPUT:
Place_NameCountryBooking_DateStart_DateEnd_DateDays_from_Booking_to_TodayMonths_Between_Booking_and_StartReplanned_Start
Eiffel_Tower_ParisFrance01JAN202501FEB202507FEB2025337101AUG2025
Grand_Canyon_National_ParkUSA15FEB202501MAR202507MAR2025292101SEP2025
Taj_Mahal_AgraIndia10NOV202401DEC202407DEC2024389101JUN2025
Great_Wall_BeijingChina20MAR202501APR202507APR2025259101OCT2025
Santorini_IslandsGreece05APR202501MAY202507MAY2025243101NOV2025
Machu_Picchu_CitadelPeru28AUG202401SEP202407SEP2024463101MAR2025
Bali_Beach_ResortsIndonesia03MAY202501JUN202507JUN2025215101DEC2025
Dubai_Burj_KhalifaUAE18DEC202401JAN202507JAN2025351101JUL2025
Singapore_Marina_BaySingapore23JAN202501FEB202507FEB2025315101AUG2025
New_York_Times_SquareUSA10DEC202401JAN202507JAN2025359101JUL2025
Tokyo_Shibuya_CrossingJapan12MAR202501APR202507APR2025267101OCT2025
Sydney_Opera_HouseAustralia01SEP202401OCT202407OCT2024459101APR2025




To Visit My Previous Birds Of India Dataset:Click Here
To Visit My Previous Ganesh Mandaps In India Dataset:Click Here
To Visit My Previous Software Commpany Analysis Dataset:Click Here
To Visit My Previous Vote Program Dataset:Click Here  



Follow Us On : 


 


--- FOLLOW OUR BLOG FOR MORE INFORMATION.

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



No comments:

Post a Comment