343.Which Country Truly Dominates the Olympics? – A Complete SAS Medal Efficiency Analytics Project
Which Country Truly Dominates the Olympics? – A Complete SAS Medal Efficiency Analytics Project
options nocenter;
1.OLYMPIC PERFORMANCE DATA CREATION
data olympic_performance;
length Country $20;
format Olympics_Date date9.;
input Country $ Gold Silver Bronze Population Rank Olympics_Date :date9.;
Total_Medals = Gold + Silver + Bronze;
datalines;
USA 39 41 33 331 1 24JUL2021
China 38 32 18 1441 2 24JUL2021
Japan 27 14 17 126 3 24JUL2021
GreatBritain 22 21 22 68 4 24JUL2021
ROC 20 28 23 146 5 24JUL2021
Australia 17 7 22 26 6 24JUL2021
Netherlands 10 12 14 17 7 24JUL2021
France 10 12 11 65 8 24JUL2021
Germany 10 11 16 83 9 24JUL2021
Italy 10 10 20 60 10 24JUL2021
Canada 7 6 11 38 11 24JUL2021
Brazil 7 6 8 213 12 24JUL2021
;
run;
proc print data=olympic_performance;
run;
OUTPUT:
| Obs | Country | Olympics_Date | Gold | Silver | Bronze | Population | Rank | Total_Medals |
|---|---|---|---|---|---|---|---|---|
| 1 | USA | 24JUL2021 | 39 | 41 | 33 | 331 | 1 | 113 |
| 2 | China | 24JUL2021 | 38 | 32 | 18 | 1441 | 2 | 88 |
| 3 | Japan | 24JUL2021 | 27 | 14 | 17 | 126 | 3 | 58 |
| 4 | GreatBritain | 24JUL2021 | 22 | 21 | 22 | 68 | 4 | 65 |
| 5 | ROC | 24JUL2021 | 20 | 28 | 23 | 146 | 5 | 71 |
| 6 | Australia | 24JUL2021 | 17 | 7 | 22 | 26 | 6 | 46 |
| 7 | Netherlands | 24JUL2021 | 10 | 12 | 14 | 17 | 7 | 36 |
| 8 | France | 24JUL2021 | 10 | 12 | 11 | 65 | 8 | 33 |
| 9 | Germany | 24JUL2021 | 10 | 11 | 16 | 83 | 9 | 37 |
| 10 | Italy | 24JUL2021 | 10 | 10 | 20 | 60 | 10 | 40 |
| 11 | Canada | 24JUL2021 | 7 | 6 | 11 | 38 | 11 | 24 |
| 12 | Brazil | 24JUL2021 | 7 | 6 | 8 | 213 | 12 | 21 |
2.DATA VALIDATION
proc contents data=olympic_performance;
run;
OUTPUT:
The CONTENTS Procedure
| Data Set Name | WORK.OLYMPIC_PERFORMANCE | Observations | 12 |
|---|---|---|---|
| Member Type | DATA | Variables | 8 |
| Engine | V9 | Indexes | 0 |
| Created | 12/19/2025 07:20:13 | Observation Length | 80 |
| Last Modified | 12/19/2025 07:20:13 | Deleted Observations | 0 |
| Protection | Compressed | NO | |
| Data Set Type | Sorted | NO | |
| Label | |||
| Data Representation | SOLARIS_X86_64, LINUX_X86_64, ALPHA_TRU64, LINUX_IA64 | ||
| Encoding | utf-8 Unicode (UTF-8) |
| Engine/Host Dependent Information | |
|---|---|
| Data Set Page Size | 131072 |
| Number of Data Set Pages | 1 |
| First Data Page | 1 |
| Max Obs per Page | 1635 |
| Obs in First Data Page | 12 |
| Number of Data Set Repairs | 0 |
| Filename | /saswork/SAS_workEE3900010E8A_odaws02-apse1-2.oda.sas.com/SAS_work271200010E8A_odaws02-apse1-2.oda.sas.com/olympic_performance.sas7bdat |
| Release Created | 9.0401M8 |
| Host Created | Linux |
| Inode Number | 67178131 |
| Access Permission | rw-r--r-- |
| Owner Name | u63247146 |
| File Size | 256KB |
| File Size (bytes) | 262144 |
| Alphabetic List of Variables and Attributes | ||||
|---|---|---|---|---|
| # | Variable | Type | Len | Format |
| 5 | Bronze | Num | 8 | |
| 1 | Country | Char | 20 | |
| 3 | Gold | Num | 8 | |
| 2 | Olympics_Date | Num | 8 | DATE9. |
| 6 | Population | Num | 8 | |
| 7 | Rank | Num | 8 | |
| 4 | Silver | Num | 8 | |
| 8 | Total_Medals | Num | 8 | |
proc print data=olympic_performance(obs=5);
run;
OUTPUT:
| Obs | Country | Olympics_Date | Gold | Silver | Bronze | Population | Rank | Total_Medals |
|---|---|---|---|---|---|---|---|---|
| 1 | USA | 24JUL2021 | 39 | 41 | 33 | 331 | 1 | 113 |
| 2 | China | 24JUL2021 | 38 | 32 | 18 | 1441 | 2 | 88 |
| 3 | Japan | 24JUL2021 | 27 | 14 | 17 | 126 | 3 | 58 |
| 4 | GreatBritain | 24JUL2021 | 22 | 21 | 22 | 68 | 4 | 65 |
| 5 | ROC | 24JUL2021 | 20 | 28 | 23 | 146 | 5 | 71 |
3.DATE FUNCTION APPLICATION (INTNX & INTCK)
data olympic_dates;
set olympic_performance;
Next_Olympics = intnx('year', Olympics_Date, 4, 'same');
Years_Since_2021 = intck('year', Olympics_Date, '24JUL2025'd);
format Next_Olympics date9.;
run;
proc print data=olympic_dates;
run;
OUTPUT:
| Obs | Country | Olympics_Date | Gold | Silver | Bronze | Population | Rank | Total_Medals | Next_Olympics | Years_Since_2021 |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | USA | 24JUL2021 | 39 | 41 | 33 | 331 | 1 | 113 | 24JUL2025 | 4 |
| 2 | China | 24JUL2021 | 38 | 32 | 18 | 1441 | 2 | 88 | 24JUL2025 | 4 |
| 3 | Japan | 24JUL2021 | 27 | 14 | 17 | 126 | 3 | 58 | 24JUL2025 | 4 |
| 4 | GreatBritain | 24JUL2021 | 22 | 21 | 22 | 68 | 4 | 65 | 24JUL2025 | 4 |
| 5 | ROC | 24JUL2021 | 20 | 28 | 23 | 146 | 5 | 71 | 24JUL2025 | 4 |
| 6 | Australia | 24JUL2021 | 17 | 7 | 22 | 26 | 6 | 46 | 24JUL2025 | 4 |
| 7 | Netherlands | 24JUL2021 | 10 | 12 | 14 | 17 | 7 | 36 | 24JUL2025 | 4 |
| 8 | France | 24JUL2021 | 10 | 12 | 11 | 65 | 8 | 33 | 24JUL2025 | 4 |
| 9 | Germany | 24JUL2021 | 10 | 11 | 16 | 83 | 9 | 37 | 24JUL2025 | 4 |
| 10 | Italy | 24JUL2021 | 10 | 10 | 20 | 60 | 10 | 40 | 24JUL2025 | 4 |
| 11 | Canada | 24JUL2021 | 7 | 6 | 11 | 38 | 11 | 24 | 24JUL2025 | 4 |
| 12 | Brazil | 24JUL2021 | 7 | 6 | 8 | 213 | 12 | 21 | 24JUL2025 | 4 |
4.PROC SQL – DERIVED METRICS
proc sql;
create table olympic_sql as
select *,
Total_Medals / Population as Medal_Efficiency format=8.3,
Gold / Population as Gold_Efficiency format=8.3
from olympic_dates
order by Medal_Efficiency desc;
quit;
proc print data=olympic_sql;
run;
OUTPUT:
| Obs | Country | Olympics_Date | Gold | Silver | Bronze | Population | Rank | Total_Medals | Next_Olympics | Years_Since_2021 | Medal_Efficiency | Gold_Efficiency |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Netherlands | 24JUL2021 | 10 | 12 | 14 | 17 | 7 | 36 | 24JUL2025 | 4 | 2.118 | 0.588 |
| 2 | Australia | 24JUL2021 | 17 | 7 | 22 | 26 | 6 | 46 | 24JUL2025 | 4 | 1.769 | 0.654 |
| 3 | GreatBritain | 24JUL2021 | 22 | 21 | 22 | 68 | 4 | 65 | 24JUL2025 | 4 | 0.956 | 0.324 |
| 4 | Italy | 24JUL2021 | 10 | 10 | 20 | 60 | 10 | 40 | 24JUL2025 | 4 | 0.667 | 0.167 |
| 5 | Canada | 24JUL2021 | 7 | 6 | 11 | 38 | 11 | 24 | 24JUL2025 | 4 | 0.632 | 0.184 |
| 6 | France | 24JUL2021 | 10 | 12 | 11 | 65 | 8 | 33 | 24JUL2025 | 4 | 0.508 | 0.154 |
| 7 | ROC | 24JUL2021 | 20 | 28 | 23 | 146 | 5 | 71 | 24JUL2025 | 4 | 0.486 | 0.137 |
| 8 | Japan | 24JUL2021 | 27 | 14 | 17 | 126 | 3 | 58 | 24JUL2025 | 4 | 0.460 | 0.214 |
| 9 | Germany | 24JUL2021 | 10 | 11 | 16 | 83 | 9 | 37 | 24JUL2025 | 4 | 0.446 | 0.120 |
| 10 | USA | 24JUL2021 | 39 | 41 | 33 | 331 | 1 | 113 | 24JUL2025 | 4 | 0.341 | 0.118 |
| 11 | Brazil | 24JUL2021 | 7 | 6 | 8 | 213 | 12 | 21 | 24JUL2025 | 4 | 0.099 | 0.033 |
| 12 | China | 24JUL2021 | 38 | 32 | 18 | 1441 | 2 | 88 | 24JUL2025 | 4 | 0.061 | 0.026 |
5.MACRO FOR MEDAL EFFICIENCY CLASSIFICATION
%macro efficiency_flag;
data olympic_efficiency;
set olympic_sql;
length Efficiency_Level $12;
if Medal_Efficiency >= 1 then Efficiency_Level = "EXCELLENT";
else if Medal_Efficiency >= 0.5 then Efficiency_Level = "GOOD";
else Efficiency_Level = "AVERAGE";
run;
proc print data=olympic_efficiency;
run;
%mend;
%efficiency_flag;
OUTPUT:
| Obs | Country | Olympics_Date | Gold | Silver | Bronze | Population | Rank | Total_Medals | Next_Olympics | Years_Since_2021 | Medal_Efficiency | Gold_Efficiency | Efficiency_Level |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Netherlands | 24JUL2021 | 10 | 12 | 14 | 17 | 7 | 36 | 24JUL2025 | 4 | 2.118 | 0.588 | EXCELLENT |
| 2 | Australia | 24JUL2021 | 17 | 7 | 22 | 26 | 6 | 46 | 24JUL2025 | 4 | 1.769 | 0.654 | EXCELLENT |
| 3 | GreatBritain | 24JUL2021 | 22 | 21 | 22 | 68 | 4 | 65 | 24JUL2025 | 4 | 0.956 | 0.324 | GOOD |
| 4 | Italy | 24JUL2021 | 10 | 10 | 20 | 60 | 10 | 40 | 24JUL2025 | 4 | 0.667 | 0.167 | GOOD |
| 5 | Canada | 24JUL2021 | 7 | 6 | 11 | 38 | 11 | 24 | 24JUL2025 | 4 | 0.632 | 0.184 | GOOD |
| 6 | France | 24JUL2021 | 10 | 12 | 11 | 65 | 8 | 33 | 24JUL2025 | 4 | 0.508 | 0.154 | GOOD |
| 7 | ROC | 24JUL2021 | 20 | 28 | 23 | 146 | 5 | 71 | 24JUL2025 | 4 | 0.486 | 0.137 | AVERAGE |
| 8 | Japan | 24JUL2021 | 27 | 14 | 17 | 126 | 3 | 58 | 24JUL2025 | 4 | 0.460 | 0.214 | AVERAGE |
| 9 | Germany | 24JUL2021 | 10 | 11 | 16 | 83 | 9 | 37 | 24JUL2025 | 4 | 0.446 | 0.120 | AVERAGE |
| 10 | USA | 24JUL2021 | 39 | 41 | 33 | 331 | 1 | 113 | 24JUL2025 | 4 | 0.341 | 0.118 | AVERAGE |
| 11 | Brazil | 24JUL2021 | 7 | 6 | 8 | 213 | 12 | 21 | 24JUL2025 | 4 | 0.099 | 0.033 | AVERAGE |
| 12 | China | 24JUL2021 | 38 | 32 | 18 | 1441 | 2 | 88 | 24JUL2025 | 4 | 0.061 | 0.026 | AVERAGE |
6.PROC MEANS – STATISTICAL SUMMARY
proc means data=olympic_efficiency min max mean sum;
var Gold Silver Bronze Total_Medals Population Medal_Efficiency;
run;
OUTPUT:
The MEANS Procedure
| Variable | Minimum | Maximum | Mean | Sum |
|---|---|---|---|---|
Gold Silver Bronze Total_Medals Population Medal_Efficiency | 7.0000000 6.0000000 8.0000000 21.0000000 17.0000000 0.0610687 | 39.0000000 41.0000000 33.0000000 113.0000000 1441.00 2.1176471 | 18.0833333 16.6666667 17.9166667 52.6666667 217.8333333 0.7118458 | 217.0000000 200.0000000 215.0000000 632.0000000 2614.00 8.5421500 |
7.PROC FREQ – RANK DISTRIBUTION
proc freq data=olympic_efficiency;
tables Rank Efficiency_Level;
run;
OUTPUT:
The FREQ Procedure
| Rank | Frequency | Percent | Cumulative Frequency | Cumulative Percent |
|---|---|---|---|---|
| 1 | 1 | 8.33 | 1 | 8.33 |
| 2 | 1 | 8.33 | 2 | 16.67 |
| 3 | 1 | 8.33 | 3 | 25.00 |
| 4 | 1 | 8.33 | 4 | 33.33 |
| 5 | 1 | 8.33 | 5 | 41.67 |
| 6 | 1 | 8.33 | 6 | 50.00 |
| 7 | 1 | 8.33 | 7 | 58.33 |
| 8 | 1 | 8.33 | 8 | 66.67 |
| 9 | 1 | 8.33 | 9 | 75.00 |
| 10 | 1 | 8.33 | 10 | 83.33 |
| 11 | 1 | 8.33 | 11 | 91.67 |
| 12 | 1 | 8.33 | 12 | 100.00 |
| Efficiency_Level | Frequency | Percent | Cumulative Frequency | Cumulative Percent |
|---|---|---|---|---|
| AVERAGE | 6 | 50.00 | 6 | 50.00 |
| EXCELLENT | 2 | 16.67 | 8 | 66.67 |
| GOOD | 4 | 33.33 | 12 | 100.00 |
8.PROC SGPLOT – VISUAL ANALYSIS
A. BAR CHART – TOTAL MEDALS BY COUNTRY
proc sgplot data=olympic_efficiency;
vbar Country / response=Total_Medals datalabel;
title "TOTAL OLYMPIC MEDALS BY COUNTRY";
run;
OUTPUT:
B. SCATTER PLOT – POPULATION VS MEDAL EFFICIENCY
proc sgplot data=olympic_efficiency;
scatter x=Population y=Medal_Efficiency / datalabel=Country;
title "POPULATION VS MEDAL EFFICIENCY";
run;
OUTPUT:
9.PROC SORT & PROC PRINT – TOP PERFORMERS
proc sort data=olympic_efficiency;
by descending Medal_Efficiency;
run;
proc print data=olympic_efficiency(obs=5);
title "TOP 5 COUNTRIES BY MEDAL EFFICIENCY";
run;
OUTPUT:
| Obs | Country | Olympics_Date | Gold | Silver | Bronze | Population | Rank | Total_Medals | Next_Olympics | Years_Since_2021 | Medal_Efficiency | Gold_Efficiency | Efficiency_Level |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Netherlands | 24JUL2021 | 10 | 12 | 14 | 17 | 7 | 36 | 24JUL2025 | 4 | 2.118 | 0.588 | EXCELLENT |
| 2 | Australia | 24JUL2021 | 17 | 7 | 22 | 26 | 6 | 46 | 24JUL2025 | 4 | 1.769 | 0.654 | EXCELLENT |
| 3 | GreatBritain | 24JUL2021 | 22 | 21 | 22 | 68 | 4 | 65 | 24JUL2025 | 4 | 0.956 | 0.324 | GOOD |
| 4 | Italy | 24JUL2021 | 10 | 10 | 20 | 60 | 10 | 40 | 24JUL2025 | 4 | 0.667 | 0.167 | GOOD |
| 5 | Canada | 24JUL2021 | 7 | 6 | 11 | 38 | 11 | 24 | 24JUL2025 | 4 | 0.632 | 0.184 | GOOD |
10.PIE Chart
proc sgplot data=olympic_efficiency;
pie Efficiency_Level / datalabel;
run;
/* Note: In practice above there is an Invalid in this code Find it,Correct it and Use it /*
OUTPUT:
Comments
Post a Comment