237.How Do Passengers Actually Travel? Can SAS Analyze It?

How Do Passengers Actually Travel? Can SAS Analyze It?

/*A dataset of real-world data of passengers traveling in a bus*/

options nocenter;

1.Creation of dataset

data Bus_Travel;

    length Name $20 Gender $6 StartPoint $15 EndPoint $15 ModeOfPayment $6 

           BusType $12 BookingDate $10 IsStudent $1;

    input PassengerID Name $ Age Gender $ StartPoint $ EndPoint $ 

          TicketPrice Distance_km TravelTime_min ModeOfPayment $ SeatNumber 

          BusType $ IsStudent $ BookingDate $;

    datalines;

1 Rahul 29 Male Hyderabad Warangal 150 140 180 Cash 1 AC N 2025-07-01

2 Sneha 22 Female Hyderabad Vijayawada 300 280 300 UPI 5 Sleeper Y 2025-07-01

3 Anil 35 Male Warangal Guntur 250 250 270 Card 6 AC N 2025-07-02

4 Priya 18 Female Vijayawada Hyderabad 300 280 310 UPI 8 Sleeper Y 2025-07-02

5 John 45 Male Guntur Hyderabad 260 250 260 Cash 9 AC N 2025-07-03

6 Ramya 30 Female Hyderabad Kurnool 220 210 240 UPI 10 Semi-Sleeper Y 2025-07-03

7 Ahmed 40 Male Hyderabad Vizag 600 620 640 Card 12 Sleeper N 2025-07-04

8 Neha 27 Female Vizag Hyderabad 600 620 620 UPI 13 Sleeper Y 2025-07-04

9 Vishal 33 Male Warangal Kurnool 350 360 380 Card 15 Non-AC N 2025-07-05

10 Meena 25 Female Hyderabad Kurnool 220 210 240 UPI 16 AC N 2025-07-05

11 Ravi 50 Male Vijayawada Warangal 200 200 210 Cash 17 AC N 2025-07-06

12 Lakshmi 19 Female Guntur Kurnool 280 300 320 UPI 18 Sleeper Y 2025-07-06

13 Suresh 42 Male Hyderabad Warangal 150 140 180 Cash 19 Non-AC N 2025-07-07

14 Rani 21 Female Kurnool Vizag 650 680 700 Card 20 Sleeper Y 2025-07-07

15 Kishore 36 Male Warangal Vizag 580 600 620 UPI 21 Semi-Sleeper N 2025-07-08

16 Divya 23 Female Hyderabad Guntur 270 260 280 UPI 22 AC Y 2025-07-08

17 Harsha 28 Male Vijayawada Vizag 400 420 430 Cash 23 Sleeper N 2025-07-09

18 Anuja 24 Female Kurnool Hyderabad 220 210 230 Card 24 AC Y 2025-07-09

19 Satish 31 Male Hyderabad Vijayawada 300 280 300 Cash 25 Non-AC N 2025-07-10

20 Jyothi 20 Female Warangal Hyderabad 150 140 160 UPI 26 Sleeper Y 2025-07-10

21 Faheem 27 Male Hyderabad Guntur 270 260 270 UPI 27 Semi-Sleeper N 2025-07-11

22 Preeti 26 Female Guntur Vizag 520 550 570 Card 28 Sleeper Y 2025-07-11

23 Balu 41 Male Vizag Kurnool 620 640 660 UPI 29 AC N 2025-07-12

24 Kavya 22 Female Kurnool Vijayawada 300 310 320 Card 30 Sleeper Y 2025-07-12

25 Manoj 32 Male Hyderabad Warangal 150 140 180 UPI 31 AC N 2025-07-13

26 Deepa 29 Female Hyderabad Guntur 270 260 280 Cash 32 AC Y 2025-07-13

27 Nikhil 38 Male Vijayawada Kurnool 350 370 390 Card 33 Semi-Sleeper N 2025-07-14

28 Shruti 21 Female Guntur Hyderabad 260 250 260 UPI 34 Sleeper Y 2025-07-14

;

run;

proc print;run;

Output:

Obs Name Gender StartPoint EndPoint ModeOfPayment BusType BookingDate IsStudent PassengerID Age TicketPrice Distance_km TravelTime_min SeatNumber
1 Rahul Male Hyderabad Warangal Cash AC 2025-07-01 N 1 29 150 140 180 1
2 Sneha Female Hyderabad Vijayawada UPI Sleeper 2025-07-01 Y 2 22 300 280 300 5
3 Anil Male Warangal Guntur Card AC 2025-07-02 N 3 35 250 250 270 6
4 Priya Female Vijayawada Hyderabad UPI Sleeper 2025-07-02 Y 4 18 300 280 310 8
5 John Male Guntur Hyderabad Cash AC 2025-07-03 N 5 45 260 250 260 9
6 Ramya Female Hyderabad Kurnool UPI Semi-Sleeper 2025-07-03 Y 6 30 220 210 240 10
7 Ahmed Male Hyderabad Vizag Card Sleeper 2025-07-04 N 7 40 600 620 640 12
8 Neha Female Vizag Hyderabad UPI Sleeper 2025-07-04 Y 8 27 600 620 620 13
9 Vishal Male Warangal Kurnool Card Non-AC 2025-07-05 N 9 33 350 360 380 15
10 Meena Female Hyderabad Kurnool UPI AC 2025-07-05 N 10 25 220 210 240 16
11 Ravi Male Vijayawada Warangal Cash AC 2025-07-06 N 11 50 200 200 210 17
12 Lakshmi Female Guntur Kurnool UPI Sleeper 2025-07-06 Y 12 19 280 300 320 18
13 Suresh Male Hyderabad Warangal Cash Non-AC 2025-07-07 N 13 42 150 140 180 19
14 Rani Female Kurnool Vizag Card Sleeper 2025-07-07 Y 14 21 650 680 700 20
15 Kishore Male Warangal Vizag UPI Semi-Sleeper 2025-07-08 N 15 36 580 600 620 21
16 Divya Female Hyderabad Guntur UPI AC 2025-07-08 Y 16 23 270 260 280 22
17 Harsha Male Vijayawada Vizag Cash Sleeper 2025-07-09 N 17 28 400 420 430 23
18 Anuja Female Kurnool Hyderabad Card AC 2025-07-09 Y 18 24 220 210 230 24
19 Satish Male Hyderabad Vijayawada Cash Non-AC 2025-07-10 N 19 31 300 280 300 25
20 Jyothi Female Warangal Hyderabad UPI Sleeper 2025-07-10 Y 20 20 150 140 160 26
21 Faheem Male Hyderabad Guntur UPI Semi-Sleeper 2025-07-11 N 21 27 270 260 270 27
22 Preeti Female Guntur Vizag Card Sleeper 2025-07-11 Y 22 26 520 550 570 28
23 Balu Male Vizag Kurnool UPI AC 2025-07-12 N 23 41 620 640 660 29
24 Kavya Female Kurnool Vijayawada Card Sleeper 2025-07-12 Y 24 22 300 310 320 30
25 Manoj Male Hyderabad Warangal UPI AC 2025-07-13 N 25 32 150 140 180 31
26 Deepa Female Hyderabad Guntur Cash AC 2025-07-13 Y 26 29 270 260 280 32
27 Nikhil Male Vijayawada Kurnool Card Semi-Sleeper 2025-07-14 N 27 38 350 370 390 33
28 Shruti Female Guntur Hyderabad UPI Sleeper 2025-07-14 Y 28 21 260 250 260 34


2.PROC PRINT: To Display Data

title "Complete Bus Travel Dataset";

proc print data=Bus_Travel noobs;

run;

Output:

Complete Bus Travel Dataset

Name Gender StartPoint EndPoint ModeOfPayment BusType BookingDate IsStudent PassengerID Age TicketPrice Distance_km TravelTime_min SeatNumber
Rahul Male Hyderabad Warangal Cash AC 2025-07-01 N 1 29 150 140 180 1
Sneha Female Hyderabad Vijayawada UPI Sleeper 2025-07-01 Y 2 22 300 280 300 5
Anil Male Warangal Guntur Card AC 2025-07-02 N 3 35 250 250 270 6
Priya Female Vijayawada Hyderabad UPI Sleeper 2025-07-02 Y 4 18 300 280 310 8
John Male Guntur Hyderabad Cash AC 2025-07-03 N 5 45 260 250 260 9
Ramya Female Hyderabad Kurnool UPI Semi-Sleeper 2025-07-03 Y 6 30 220 210 240 10
Ahmed Male Hyderabad Vizag Card Sleeper 2025-07-04 N 7 40 600 620 640 12
Neha Female Vizag Hyderabad UPI Sleeper 2025-07-04 Y 8 27 600 620 620 13
Vishal Male Warangal Kurnool Card Non-AC 2025-07-05 N 9 33 350 360 380 15
Meena Female Hyderabad Kurnool UPI AC 2025-07-05 N 10 25 220 210 240 16
Ravi Male Vijayawada Warangal Cash AC 2025-07-06 N 11 50 200 200 210 17
Lakshmi Female Guntur Kurnool UPI Sleeper 2025-07-06 Y 12 19 280 300 320 18
Suresh Male Hyderabad Warangal Cash Non-AC 2025-07-07 N 13 42 150 140 180 19
Rani Female Kurnool Vizag Card Sleeper 2025-07-07 Y 14 21 650 680 700 20
Kishore Male Warangal Vizag UPI Semi-Sleeper 2025-07-08 N 15 36 580 600 620 21
Divya Female Hyderabad Guntur UPI AC 2025-07-08 Y 16 23 270 260 280 22
Harsha Male Vijayawada Vizag Cash Sleeper 2025-07-09 N 17 28 400 420 430 23
Anuja Female Kurnool Hyderabad Card AC 2025-07-09 Y 18 24 220 210 230 24
Satish Male Hyderabad Vijayawada Cash Non-AC 2025-07-10 N 19 31 300 280 300 25
Jyothi Female Warangal Hyderabad UPI Sleeper 2025-07-10 Y 20 20 150 140 160 26
Faheem Male Hyderabad Guntur UPI Semi-Sleeper 2025-07-11 N 21 27 270 260 270 27
Preeti Female Guntur Vizag Card Sleeper 2025-07-11 Y 22 26 520 550 570 28
Balu Male Vizag Kurnool UPI AC 2025-07-12 N 23 41 620 640 660 29
Kavya Female Kurnool Vijayawada Card Sleeper 2025-07-12 Y 24 22 300 310 320 30
Manoj Male Hyderabad Warangal UPI AC 2025-07-13 N 25 32 150 140 180 31
Deepa Female Hyderabad Guntur Cash AC 2025-07-13 Y 26 29 270 260 280 32
Nikhil Male Vijayawada Kurnool Card Semi-Sleeper 2025-07-14 N 27 38 350 370 390 33
Shruti Female Guntur Hyderabad UPI Sleeper 2025-07-14 Y 28 21 260 250 260 34


3.PROC SORT: Sorting by Ticket Price (Descending)

proc sort data=Bus_Travel out=Sorted_Travel;

    by descending TicketPrice;

run;


title "Passengers Sorted by Highest Ticket Price";

proc print data=Sorted_Travel;

run;

Output:

Passengers Sorted by Highest Ticket Price

Obs Name Gender StartPoint EndPoint ModeOfPayment BusType BookingDate IsStudent PassengerID Age TicketPrice Distance_km TravelTime_min SeatNumber
1 Rani Female Kurnool Vizag Card Sleeper 2025-07-07 Y 14 21 650 680 700 20
2 Balu Male Vizag Kurnool UPI AC 2025-07-12 N 23 41 620 640 660 29
3 Ahmed Male Hyderabad Vizag Card Sleeper 2025-07-04 N 7 40 600 620 640 12
4 Neha Female Vizag Hyderabad UPI Sleeper 2025-07-04 Y 8 27 600 620 620 13
5 Kishore Male Warangal Vizag UPI Semi-Sleeper 2025-07-08 N 15 36 580 600 620 21
6 Preeti Female Guntur Vizag Card Sleeper 2025-07-11 Y 22 26 520 550 570 28
7 Harsha Male Vijayawada Vizag Cash Sleeper 2025-07-09 N 17 28 400 420 430 23
8 Vishal Male Warangal Kurnool Card Non-AC 2025-07-05 N 9 33 350 360 380 15
9 Nikhil Male Vijayawada Kurnool Card Semi-Sleeper 2025-07-14 N 27 38 350 370 390 33
10 Sneha Female Hyderabad Vijayawada UPI Sleeper 2025-07-01 Y 2 22 300 280 300 5
11 Priya Female Vijayawada Hyderabad UPI Sleeper 2025-07-02 Y 4 18 300 280 310 8
12 Satish Male Hyderabad Vijayawada Cash Non-AC 2025-07-10 N 19 31 300 280 300 25
13 Kavya Female Kurnool Vijayawada Card Sleeper 2025-07-12 Y 24 22 300 310 320 30
14 Lakshmi Female Guntur Kurnool UPI Sleeper 2025-07-06 Y 12 19 280 300 320 18
15 Divya Female Hyderabad Guntur UPI AC 2025-07-08 Y 16 23 270 260 280 22
16 Faheem Male Hyderabad Guntur UPI Semi-Sleeper 2025-07-11 N 21 27 270 260 270 27
17 Deepa Female Hyderabad Guntur Cash AC 2025-07-13 Y 26 29 270 260 280 32
18 John Male Guntur Hyderabad Cash AC 2025-07-03 N 5 45 260 250 260 9
19 Shruti Female Guntur Hyderabad UPI Sleeper 2025-07-14 Y 28 21 260 250 260 34
20 Anil Male Warangal Guntur Card AC 2025-07-02 N 3 35 250 250 270 6
21 Ramya Female Hyderabad Kurnool UPI Semi-Sleeper 2025-07-03 Y 6 30 220 210 240 10
22 Meena Female Hyderabad Kurnool UPI AC 2025-07-05 N 10 25 220 210 240 16
23 Anuja Female Kurnool Hyderabad Card AC 2025-07-09 Y 18 24 220 210 230 24
24 Ravi Male Vijayawada Warangal Cash AC 2025-07-06 N 11 50 200 200 210 17
25 Rahul Male Hyderabad Warangal Cash AC 2025-07-01 N 1 29 150 140 180 1
26 Suresh Male Hyderabad Warangal Cash Non-AC 2025-07-07 N 13 42 150 140 180 19
27 Jyothi Female Warangal Hyderabad UPI Sleeper 2025-07-10 Y 20 20 150 140 160 26
28 Manoj Male Hyderabad Warangal UPI AC 2025-07-13 N 25 32 150 140 180 31


4.PROC FREQ: Frequency of Gender and BusType

title "Gender Distribution";

proc freq data=Bus_Travel;

    tables Gender;

run;

Output:

Gender Distribution

The FREQ Procedure

Gender Frequency Percent Cumulative
Frequency
Cumulative
Percent
Female 14 50.00 14 50.00
Male 14 50.00 28 100.00


title "Bus Type Distribution";

proc freq data=Bus_Travel;

    tables BusType;

run;

Output:

Bus Type Distribution

The FREQ Procedure

BusType Frequency Percent Cumulative
Frequency
Cumulative
Percent
AC 10 35.71 10 35.71
Non-AC 3 10.71 13 46.43
Semi-Sleeper 4 14.29 17 60.71
Sleeper 11 39.29 28 100.00


5.PROC MEANS: Summary Statistics

title "Summary of Age, Ticket Price, Distance and Travel Time";

proc means data=Bus_Travel n mean min max std;

    var Age TicketPrice Distance_km TravelTime_min;

run;

Output:

Summary of Age, Ticket Price, Distance and Travel Time

The MEANS Procedure

Variable N Mean Minimum Maximum Std Dev
Age
TicketPrice
Distance_km
TravelTime_min
28
28
28
28
29.7857143
328.2142857
329.6428571
350.0000000
18.0000000
150.0000000
140.0000000
160.0000000
50.0000000
650.0000000
680.0000000
700.0000000
8.4606153
155.4456812
168.4236753
164.8793049


6.PROC SQL: Advanced Querying

a.Total Revenue Collected

proc sql;

    title "Total Revenue Collected from All Tickets";

    select sum(TicketPrice) as TotalRevenue from Bus_Travel;

quit;

Output:

Total Revenue Collected from All Tickets

TotalRevenue
9190


b.Average Ticket Price per Bus Type

proc sql;

    title "Average Ticket Price by Bus Type";

    select BusType, avg(TicketPrice) as AvgPrice

    from Bus_Travel

    group by BusType;

quit;

Output:

Average Ticket Price by Bus Type

BusType AvgPrice
AC 261
Non-AC 266.6667
Semi-Sleeper 355
Sleeper 396.3636


c.Number of Students by Destination

proc sql;

    title "Student Count by EndPoint";

    select EndPoint, count(*) as StudentCount

    from Bus_Travel

    where IsStudent = 'Y'

    group by EndPoint;

quit;

Output:

Student Count by EndPoint

EndPoint StudentCount
Guntur 2
Hyderabad 5
Kurnool 2
Vijayawada 2
Vizag 2


7.MACROS in SAS

a.Define a Macro to Get All Passengers from a Specific StartPoint

%macro filter_by_start(start);

    title "Passengers Traveling from &start";

    proc print data=Bus_Travel;

        where StartPoint = "&start";

    run;

%mend;


%filter_by_start(Hyderabad);

Output:

Passengers Traveling from Hyderabad

Obs Name Gender StartPoint EndPoint ModeOfPayment BusType BookingDate IsStudent PassengerID Age TicketPrice Distance_km TravelTime_min SeatNumber
1 Rahul Male Hyderabad Warangal Cash AC 2025-07-01 N 1 29 150 140 180 1
2 Sneha Female Hyderabad Vijayawada UPI Sleeper 2025-07-01 Y 2 22 300 280 300 5
6 Ramya Female Hyderabad Kurnool UPI Semi-Sleeper 2025-07-03 Y 6 30 220 210 240 10
7 Ahmed Male Hyderabad Vizag Card Sleeper 2025-07-04 N 7 40 600 620 640 12
10 Meena Female Hyderabad Kurnool UPI AC 2025-07-05 N 10 25 220 210 240 16
13 Suresh Male Hyderabad Warangal Cash Non-AC 2025-07-07 N 13 42 150 140 180 19
16 Divya Female Hyderabad Guntur UPI AC 2025-07-08 Y 16 23 270 260 280 22
19 Satish Male Hyderabad Vijayawada Cash Non-AC 2025-07-10 N 19 31 300 280 300 25
21 Faheem Male Hyderabad Guntur UPI Semi-Sleeper 2025-07-11 N 21 27 270 260 270 27
25 Manoj Male Hyderabad Warangal UPI AC 2025-07-13 N 25 32 150 140 180 31
26 Deepa Female Hyderabad Guntur Cash AC 2025-07-13 Y 26 29 270 260 280 32


%filter_by_start(Warangal);

Output:

Passengers Traveling from Warangal

Obs Name Gender StartPoint EndPoint ModeOfPayment BusType BookingDate IsStudent PassengerID Age TicketPrice Distance_km TravelTime_min SeatNumber
3 Anil Male Warangal Guntur Card AC 2025-07-02 N 3 35 250 250 270 6
9 Vishal Male Warangal Kurnool Card Non-AC 2025-07-05 N 9 33 350 360 380 15
15 Kishore Male Warangal Vizag UPI Semi-Sleeper 2025-07-08 N 15 36 580 600 620 21
20 Jyothi Female Warangal Hyderabad UPI Sleeper 2025-07-10 Y 20 20 150 140 160 26


b.Macro to Calculate Total Revenue for a Bus Type

%macro bus_type_revenue(type);

    proc sql;

        title "Total Revenue for Bus Type: &type";

        select BusType, sum(TicketPrice) as Revenue

        from Bus_Travel

        where BusType = "&type"

        group by BusType;

    quit;

%mend;


%bus_type_revenue(AC);

Output:

Total Revenue for Bus Type: AC

BusType Revenue
AC 2610


%bus_type_revenue(Sleeper);

Output:
Total Revenue for Bus Type: Sleeper

BusType Revenue
Sleeper 4360






To Visit My Previous First. Last. Statements:Click Here
To Visit My Previous Set Where Statements:Click Here
To Visit My Previous Online Gaming Dataset:Click Here
To Visit My Previous Length Statement Using In Many Ways: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

Popular posts from this blog

409.Can We Build a Reliable Emergency Services Analytics & Fraud Detection System in SAS While Identifying and Fixing Intentional Errors?

397.If a satellite has excellent signal strength but very high latency, can it still deliver good quality communication? Why or why not?A Sas Study

401.How Efficient Are Global Data Centers? A Complete SAS Analytics Study