328.Can SAS analytics reveal which world tourist places truly attract visitors year after year?

Can SAS analytics reveal which world tourist places truly attract visitors year after year?

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.



Comments

Popular posts from this blog

412.Can We Build And Clean A University Course Analytics & Fraud Detection System In Sas Using Only Macros While Intentionally Creating And Fixing Errors?

420.Can We Detect Errors, Prevent Fraud, And Optimize Biometric Access System Security Using Advanced SAS Programming?

418.Can We Design, Debug, Detect Fraud, And Optimize A Smart Parking System Using Advanced SAS Programming Techniques?