213.ANALYZING TOP CRIME SCENES WORLDWIDE USING PROC SQL AND PROC MACRO IN SAS FOR PATTERN DETECTION AND REGION BASED COMPARISONS AND CRIME CATEGORY ANALYSIS AND TRENDS
- Get link
- X
- Other Apps
ANALYZING TOP CRIME SCENES WORLDWIDE USING PROC SQL AND PROC MACRO IN SAS FOR PATTERN DETECTION AND REGION BASED COMPARISONS AND CRIME CATEGORY ANALYSIS AND TRENDS
/*Creating a unique dataset about different types of top crime scenes worldwide.*/
Step 1: Creating the Dataset Using PROC SQL
Define a dataset called Top_Crime_Scenes with fields:
Crime_ID: Unique numeric identifier
Country: Country name
City: City or metro region
Crime_Type: Category (e.g., Homicide, Robbery, Kidnapping)
Scene_Type: Location of crime (e.g., Street, Home, Bank)
Victims_Count: Number of victims
Year: Year of occurrence
Solved: Whether the case is solved (Yes/No)
Notorious_Rating: Severity or media impact (1–10 scale)
proc sql;
create table Top_Crime_Scenes (
Crime_ID num,
Country char(20),
City char(20),
Crime_Type char(25),
Scene_Type char(25),
Victims_Count num,
Year num,
Solved char(3),
Notorious_Rating num
);
quit;
proc sql;
insert into Top_Crime_Scenes
values(1, 'USA', 'Chicago', 'Homicide', 'Street', 3, 2019, 'No', 9);
insert into Top_Crime_Scenes
values(2, 'Mexico', 'Juarez', 'Drug Trafficking', 'Warehouse', 0, 2020, 'No', 10);
insert into Top_Crime_Scenes
values(3, 'India', 'Delhi', 'Robbery', 'Bank', 1, 2021, 'Yes', 7);
insert into Top_Crime_Scenes
values(4, 'Brazil', 'Rio', 'Kidnapping', 'Forest', 2, 2018, 'No', 8);
insert into Top_Crime_Scenes
values(5, 'Russia', 'Moscow', 'Assassination', 'Hotel', 1, 2019, 'Yes', 8);
insert into Top_Crime_Scenes
values(6, 'South Africa', 'Cape Town', 'Homicide', 'Home', 4, 2020, 'Yes', 9);
insert into Top_Crime_Scenes
values(7, 'UK', 'London', 'Robbery', 'ATM', 0, 2019, 'Yes', 6);
insert into Top_Crime_Scenes
values(8, 'Colombia', 'Medellin', 'Drug Trafficking', 'Jungle', 0, 2021, 'No', 10);
insert into Top_Crime_Scenes
values(9, 'Japan', 'Tokyo', 'Cybercrime', 'Data Center', 0, 2022, 'Yes', 7);
insert into Top_Crime_Scenes
values(10, 'Australia', 'Sydney', 'Arson', 'Warehouse', 2, 2017, 'Yes', 5);
insert into Top_Crime_Scenes
values(11, 'Germany', 'Berlin', 'Kidnapping', 'School', 1, 2020, 'No', 7);
insert into Top_Crime_Scenes
values(12, 'USA', 'New York', 'Homicide', 'Apartment', 2, 2022, 'Yes', 8);
insert into Top_Crime_Scenes
values(13, 'Canada', 'Toronto', 'Cybercrime', 'Server Farm', 0, 2021, 'Yes', 6);
insert into Top_Crime_Scenes
values(14, 'Italy', 'Naples', 'Robbery', 'Store', 1, 2019, 'No', 7);
insert into Top_Crime_Scenes
values(15, 'Nigeria', 'Lagos', 'Terrorism', 'Market', 10, 2020, 'No', 10);
insert into Top_Crime_Scenes
values(16, 'Pakistan', 'Karachi', 'Bombing', 'Bus Station', 7, 2019, 'No', 10);
insert into Top_Crime_Scenes
values(17, 'France', 'Paris', 'Assassination', 'Office', 1, 2018, 'Yes', 8);
insert into Top_Crime_Scenes
values(18, 'China', 'Beijing', 'Homicide', 'School', 2, 2021, 'Yes', 9);
quit;
proc print;run;
Output:
Obs | Crime_ID | Country | City | Crime_Type | Scene_Type | Victims_Count | Year | Solved | Notorious_Rating |
---|---|---|---|---|---|---|---|---|---|
1 | 1 | USA | Chicago | Homicide | Street | 3 | 2019 | No | 9 |
2 | 2 | Mexico | Juarez | Drug Trafficking | Warehouse | 0 | 2020 | No | 10 |
3 | 3 | India | Delhi | Robbery | Bank | 1 | 2021 | Yes | 7 |
4 | 4 | Brazil | Rio | Kidnapping | Forest | 2 | 2018 | No | 8 |
5 | 5 | Russia | Moscow | Assassination | Hotel | 1 | 2019 | Yes | 8 |
6 | 6 | South Africa | Cape Town | Homicide | Home | 4 | 2020 | Yes | 9 |
7 | 7 | UK | London | Robbery | ATM | 0 | 2019 | Yes | 6 |
8 | 8 | Colombia | Medellin | Drug Trafficking | Jungle | 0 | 2021 | No | 10 |
9 | 9 | Japan | Tokyo | Cybercrime | Data Center | 0 | 2022 | Yes | 7 |
10 | 10 | Australia | Sydney | Arson | Warehouse | 2 | 2017 | Yes | 5 |
11 | 11 | Germany | Berlin | Kidnapping | School | 1 | 2020 | No | 7 |
12 | 12 | USA | New York | Homicide | Apartment | 2 | 2022 | Yes | 8 |
13 | 13 | Canada | Toronto | Cybercrime | Server Farm | 0 | 2021 | Yes | 6 |
14 | 14 | Italy | Naples | Robbery | Store | 1 | 2019 | No | 7 |
15 | 15 | Nigeria | Lagos | Terrorism | Market | 10 | 2020 | No | 10 |
16 | 16 | Pakistan | Karachi | Bombing | Bus Station | 7 | 2019 | No | 10 |
17 | 17 | France | Paris | Assassination | Office | 1 | 2018 | Yes | 8 |
18 | 18 | China | Beijing | Homicide | School | 2 | 2021 | Yes | 9 |
Step 2: Macro to Count Crimes by Type
%macro count_by_crimetype(crime);
proc sql;
title "Count of &crime Incidents";
select count(*) as Total_Crimes
from Top_Crime_Scenes
where Crime_Type = "&crime";
quit;
%mend;
%count_by_crimetype(Homicide);
Output:
Count of Homicide Incidents |
Total_Crimes |
---|
4 |
%count_by_crimetype(Robbery);
Output:
Count of Robbery Incidents |
Total_Crimes |
---|
3 |
%count_by_crimetype(Drug Trafficking);
Output:
Count of Drug Trafficking Incidents |
Total_Crimes |
---|
2 |
Step 3: Macro for Country-Based Summary
%macro summary_by_country(country);
proc sql;
title "Summary for &country";
select Crime_Type, count(*) as Total,
avg(Victims_Count) as Avg_Victims,
avg(Notorious_Rating) as Avg_Impact
from Top_Crime_Scenes
where Country = "&country"
group by Crime_Type;
quit;
%mend;
%summary_by_country(USA);
Output:
Summary for USA |
Crime_Type | Total | Avg_Victims | Avg_Impact |
---|---|---|---|
Homicide | 2 | 2.5 | 8.5 |
%summary_by_country(India);
Output:
Summary for India |
Crime_Type | Total | Avg_Victims | Avg_Impact |
---|---|---|---|
Robbery | 1 | 1 | 7 |
%summary_by_country(Mexico);
Output:
Summary for Mexico |
Crime_Type | Total | Avg_Victims | Avg_Impact |
---|---|---|---|
Drug Trafficking | 1 | 0 | 10 |
Step 4: Macro Looping Over Multiple Countries
%macro loop_countries;
%let countries = USA India Mexico Brazil Nigeria;
%do i = 1 %to %sysfunc(countw(&countries));
%let c = %scan(&countries, &i);
%summary_by_country(&c);
%end;
%mend;
%loop_countries;
Output:
Summary for USA |
Crime_Type | Total | Avg_Victims | Avg_Impact |
---|---|---|---|
Homicide | 2 | 2.5 | 8.5 |
Summary for Brazil |
Crime_Type | Total | Avg_Victims | Avg_Impact |
---|---|---|---|
Kidnapping | 1 | 2 | 8 |
Step 5: Ranking Notorious Crimes
proc sql outobs=5;
title "Top 5 Most Notorious Crimes Worldwide";
select Crime_ID, Country, City, Crime_Type, Notorious_Rating
from Top_Crime_Scenes
order by Notorious_Rating desc;
quit;
Output:
Top 5 Most Notorious Crimes Worldwide |
Crime_ID | Country | City | Crime_Type | Notorious_Rating |
---|---|---|---|---|
15 | Nigeria | Lagos | Terrorism | 10 |
16 | Pakistan | Karachi | Bombing | 10 |
2 | Mexico | Juarez | Drug Trafficking | 10 |
8 | Colombia | Medellin | Drug Trafficking | 10 |
18 | China | Beijing | Homicide | 9 |
Step 6: Scene Type Distribution
proc sql;
title "Distribution of Scene Types";
select Scene_Type, count(*) as Count
from Top_Crime_Scenes
group by Scene_Type;
quit;
Output:
Distribution of Scene Types |
Scene_Type | Count |
---|---|
ATM | 1 |
Apartment | 1 |
Bank | 1 |
Bus Station | 1 |
Data Center | 1 |
Forest | 1 |
Home | 1 |
Hotel | 1 |
Jungle | 1 |
Market | 1 |
Office | 1 |
School | 2 |
Server Farm | 1 |
Store | 1 |
Street | 1 |
Warehouse | 2 |
Step 7: Unsolved Crimes by Region
proc sql;
title "Unsolved Crimes by Country";
select Country, count(*) as Unsolved_Count
from Top_Crime_Scenes
where Solved = 'No'
group by Country;
quit;
Output:
Unsolved Crimes by Country |
Country | Unsolved_Count |
---|---|
Brazil | 1 |
Colombia | 1 |
Germany | 1 |
Italy | 1 |
Mexico | 1 |
Nigeria | 1 |
Pakistan | 1 |
USA | 1 |
Step 8: Year-wise Crime Trend
proc sql;
title "Crimes Over the Years";
select Year, count(*) as Crime_Count
from Top_Crime_Scenes
group by Year
order by Year;
quit;
Output:
Crimes Over the Years |
Year | Crime_Count |
---|---|
2017 | 1 |
2018 | 2 |
2019 | 5 |
2020 | 4 |
2021 | 4 |
2022 | 2 |
Step 9: Table Summary By Country
proc sql;
create table Summary_By_Country as
select Country, Crime_Type, count(*) as Count
from Top_Crime_Scenes
group by Country, Crime_Type;
quit;
Output:
Obs | Country | Crime_Type | Count |
---|---|---|---|
1 | Australia | Arson | 1 |
2 | Brazil | Kidnapping | 1 |
3 | Canada | Cybercrime | 1 |
4 | China | Homicide | 1 |
5 | Colombia | Drug Trafficking | 1 |
6 | France | Assassination | 1 |
7 | Germany | Kidnapping | 1 |
8 | India | Robbery | 1 |
9 | Italy | Robbery | 1 |
10 | Japan | Cybercrime | 1 |
11 | Mexico | Drug Trafficking | 1 |
12 | Nigeria | Terrorism | 1 |
13 | Pakistan | Bombing | 1 |
14 | Russia | Assassination | 1 |
15 | South Africa | Homicide | 1 |
16 | UK | Robbery | 1 |
17 | USA | Homicide | 2 |
- Get link
- X
- Other Apps
Comments
Post a Comment