392.How Can SAS Analytics Transform E-Waste Recycling Facilities into Sustainable and Efficient Operations?
How Can SAS Analytics Transform E-Waste Recycling Facilities into Sustainable and Efficient Operations?
HERE IN THIS PROJECT WE USED THESE SAS STATEMENTS —
DATA STEP | PROC SQL | PROC PRINT | PROC SGPLOT | MACROS | PROC CORR | PROC MEANS | PROC FREQ | PROC UNIVARIATE | APPEND | PROC DATASETS DELETE | DATA FUNCTIONS
1. INTRODUCTION
Electronic waste (E-Waste) is one of the fastest-growing waste streams globally. Devices like mobile phones, laptops, televisions, and batteries contribute heavily to environmental pollution if not recycled properly.
E-waste recycling facilities play a crucial role in:
· Recovering valuable materials
· Preventing toxic contamination
· Ensuring sustainable industrial practices
This SAS project simulates real-world operational data for E-Waste Recycling Facilities and applies advanced analytics techniques using Base SAS, SQL, Macros, and Statistical Procedures.
2. BUSINESS CONTEXT
Why this project matters:
Companies, governments, and NGOs need:
· Facility efficiency tracking
· Hazard compliance monitoring
· Sustainability performance measurement
· Fraud and anomaly detection
· Cost vs recovery optimization
This dataset and analysis helps answer:
· Which facilities are efficient?
· Which ones pose high hazard risks?
· Are reported recovery rates realistic?
· Are operational costs aligned with output?
3. PROJECT OBJECTIVES
✔ Create a realistic dataset with 15+ observations
✔ Apply date formats, percentages, numeric metrics
✔ Implement utilization classification macro
✔ Implement fraud detection logic macro
✔ Use PROC SQL, MEANS, UNIVARIATE, CORR, FREQ, SGPLOT
✔ Apply SET, MERGE, APPEND, TRANSPOSE
✔ Use INTCK, INTNX, MDY
✔ Use character and numeric functions
✔ Provide deep explanations for interviews
4. DATASET DESIGN
Dataset Name:
ewaste_facilities
Observations:
18 facilities
Geographic Coverage:
India, USA, Germany, Japan, China, UK, Canada, Australia
5. VARIABLE DEFINITIONS
Variable | Description |
Facility_Name | Name of recycling facility |
Country | Facility country |
Waste_Processed_Tons | Total e-waste processed |
Recovery_Rate | % of material recovered |
Hazard_Level | LOW / MEDIUM / HIGH |
Operating_Cost | Annual operating cost |
Sustainability_Score | Internal sustainability rating |
Start_Date | Facility operational start date |
Report_Date | Reporting date |
Utilization_Class | Macro-derived classification |
Fraud_Flag | Fraud detection indicator |
6. DATE HANDLING STRATEGY
We will use:
· MDY() – create SAS dates
· INTCK() – calculate duration
· INTNX() – project future review dates
· SAS date formats (date9.)
7. DATASET CREATION
data ewaste_facilities;
length Facility_Name $30 Country $15 Hazard_Level $10;
input Facility_Name $ Country $ Waste_Processed_Tons Recovery_Rate Hazard_Level $
Operating_Cost Sustainability_Score Start_Date :date9. Report_Date :date9.;
format Start_Date Report_Date date9.;
datalines;
EcoCycle_India India 12000 85 LOW 4500000 88 01JAN2015 01JAN2025
GreenLoop_USA USA 18000 92 MEDIUM 8200000 91 15MAR2012 01JAN2025
ReTech_Germany Germany 15000 89 LOW 6100000 90 10FEB2014 01JAN2025
UrbanRecycle_UK UK 11000 78 HIGH 4000000 72 05MAY2016 01JAN2025
Ecoreclaim_Japan Japan 17000 94 LOW 7500000 95 12JUN2011 01JAN2025
WasteRenew_China China 30000 60 HIGH 5000000 55 20AUG2018 01JAN2025
EcoNova_Canada Canada 13000 88 MEDIUM 5300000 87 18SEP2013 01JAN2025
RecycleHub_Aus Australia 9000 82 MEDIUM 3900000 80 11NOV2017 01JAN2025
GreenEarth_India India 14000 90 LOW 5200000 92 09APR2014 01JAN2025
TechWaste_USA USA 21000 58 HIGH 8700000 60 07JUL2019 01JAN2025
EcoSphere_UK UK 12500 86 MEDIUM 4600000 85 03MAR2015 01JAN2025
ZeroWaste_Japan Japan 16000 91 LOW 6800000 94 25DEC2010 01JAN2025
CleanCircuit_Germany Germany 14500 88 MEDIUM 6000000 89 14JAN2013 01JAN2025
RecycleMax_India India 20000 62 HIGH 7100000 65 02FEB2020 01JAN2025
EcoFuture_USA USA 15500 87 MEDIUM 5900000 88 06JUN2016 01JAN2025
UrbanGreen_Canada Canada 13500 84 MEDIUM 5100000 86 19SEP2014 01JAN2025
GreenMetal_China China 28000 65 HIGH 5400000 58 21OCT2018 01JAN2025
EcoLoop_Aus Australia 9500 83 LOW 3700000 82 13NOV2016 01JAN2025
;
run;
proc print data=ewaste_facilities;
run;
OUTPUT:
| Obs | Facility_Name | Country | Hazard_Level | Waste_Processed_Tons | Recovery_Rate | Operating_Cost | Sustainability_Score | Start_Date | Report_Date |
|---|---|---|---|---|---|---|---|---|---|
| 1 | EcoCycle_India | India | LOW | 12000 | 85 | 4500000 | 88 | 01JAN2015 | 01JAN2025 |
| 2 | GreenLoop_USA | USA | MEDIUM | 18000 | 92 | 8200000 | 91 | 15MAR2012 | 01JAN2025 |
| 3 | ReTech_Germany | Germany | LOW | 15000 | 89 | 6100000 | 90 | 10FEB2014 | 01JAN2025 |
| 4 | UrbanRecycle_UK | UK | HIGH | 11000 | 78 | 4000000 | 72 | 05MAY2016 | 01JAN2025 |
| 5 | Ecoreclaim_Japan | Japan | LOW | 17000 | 94 | 7500000 | 95 | 12JUN2011 | 01JAN2025 |
| 6 | WasteRenew_China | China | HIGH | 30000 | 60 | 5000000 | 55 | 20AUG2018 | 01JAN2025 |
| 7 | EcoNova_Canada | Canada | MEDIUM | 13000 | 88 | 5300000 | 87 | 18SEP2013 | 01JAN2025 |
| 8 | RecycleHub_Aus | Australia | MEDIUM | 9000 | 82 | 3900000 | 80 | 11NOV2017 | 01JAN2025 |
| 9 | GreenEarth_India | India | LOW | 14000 | 90 | 5200000 | 92 | 09APR2014 | 01JAN2025 |
| 10 | TechWaste_USA | USA | HIGH | 21000 | 58 | 8700000 | 60 | 07JUL2019 | 01JAN2025 |
| 11 | EcoSphere_UK | UK | MEDIUM | 12500 | 86 | 4600000 | 85 | 03MAR2015 | 01JAN2025 |
| 12 | ZeroWaste_Japan | Japan | LOW | 16000 | 91 | 6800000 | 94 | 25DEC2010 | 01JAN2025 |
| 13 | CleanCircuit_Germany | Germany | MEDIUM | 14500 | 88 | 6000000 | 89 | 14JAN2013 | 01JAN2025 |
| 14 | RecycleMax_India | India | HIGH | 20000 | 62 | 7100000 | 65 | 02FEB2020 | 01JAN2025 |
| 15 | EcoFuture_USA | USA | MEDIUM | 15500 | 87 | 5900000 | 88 | 06JUN2016 | 01JAN2025 |
| 16 | UrbanGreen_Canada | Canada | MEDIUM | 13500 | 84 | 5100000 | 86 | 19SEP2014 | 01JAN2025 |
| 17 | GreenMetal_China | China | HIGH | 28000 | 65 | 5400000 | 58 | 21OCT2018 | 01JAN2025 |
| 18 | EcoLoop_Aus | Australia | LOW | 9500 | 83 | 3700000 | 82 | 13NOV2016 | 01JAN2025 |
· length defines character size to prevent truncation
· format date9. ensures readable dates
· MDY-style dates entered as SAS date literals
· 18 realistic observations created
· Numeric + percentage + categorical mix
8. DATA CLEANING & CHARACTER FUNCTIONS
data ewaste_clean;
set ewaste_facilities;
Facility_Name = propcase(strip(Facility_Name));
Country = upcase(trim(Country));
Facility_ID = catx('_', Country, substr(Facility_Name,1,5));
run;
proc print data=ewaste_clean;
var Facility_Name Country Facility_ID;
run;
OUTPUT:
| Obs | Facility_Name | Country | Facility_ID |
|---|---|---|---|
| 1 | Ecocycle_india | INDIA | INDIA_Ecocy |
| 2 | Greenloop_usa | USA | USA_Green |
| 3 | Retech_germany | GERMANY | GERMANY_Retec |
| 4 | Urbanrecycle_uk | UK | UK_Urban |
| 5 | Ecoreclaim_japan | JAPAN | JAPAN_Ecore |
| 6 | Wasterenew_china | CHINA | CHINA_Waste |
| 7 | Econova_canada | CANADA | CANADA_Econo |
| 8 | Recyclehub_aus | AUSTRALIA | AUSTRALIA_Recyc |
| 9 | Greenearth_india | INDIA | INDIA_Green |
| 10 | Techwaste_usa | USA | USA_Techw |
| 11 | Ecosphere_uk | UK | UK_Ecosp |
| 12 | Zerowaste_japan | JAPAN | JAPAN_Zerow |
| 13 | Cleancircuit_germany | GERMANY | GERMANY_Clean |
| 14 | Recyclemax_india | INDIA | INDIA_Recyc |
| 15 | Ecofuture_usa | USA | USA_Ecofu |
| 16 | Urbangreen_canada | CANADA | CANADA_Urban |
| 17 | Greenmetal_china | CHINA | CHINA_Green |
| 18 | Ecoloop_aus | AUSTRALIA | AUSTRALIA_Ecolo |
· strip() removes leading/trailing spaces
· trim() cleans end spaces
· propcase() improves readability
· upcase() standardizes values
· coalesce() handles missing hazard levels
· catx() builds business IDs
9. UTILIZATION CLASSIFICATION MACRO
%macro utilization_class;
data ewaste_util;
set ewaste_clean;
length Utilization_Class $8.;
if Waste_Processed_Tons >= 18000 then Utilization_Class='HIGH';
else if Waste_Processed_Tons >= 12000 then Utilization_Class='MEDIUM';
else Utilization_Class='LOW';
run;
proc print data=ewaste_util;
run;
%mend;
%utilization_class;
OUTPUT:
| Obs | Facility_Name | Country | Hazard_Level | Waste_Processed_Tons | Recovery_Rate | Operating_Cost | Sustainability_Score | Start_Date | Report_Date | Facility_ID | Utilization_Class |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Ecocycle_india | INDIA | LOW | 12000 | 85 | 4500000 | 88 | 01JAN2015 | 01JAN2025 | INDIA_Ecocy | MEDIUM |
| 2 | Greenloop_usa | USA | MEDIUM | 18000 | 92 | 8200000 | 91 | 15MAR2012 | 01JAN2025 | USA_Green | HIGH |
| 3 | Retech_germany | GERMANY | LOW | 15000 | 89 | 6100000 | 90 | 10FEB2014 | 01JAN2025 | GERMANY_Retec | MEDIUM |
| 4 | Urbanrecycle_uk | UK | HIGH | 11000 | 78 | 4000000 | 72 | 05MAY2016 | 01JAN2025 | UK_Urban | LOW |
| 5 | Ecoreclaim_japan | JAPAN | LOW | 17000 | 94 | 7500000 | 95 | 12JUN2011 | 01JAN2025 | JAPAN_Ecore | MEDIUM |
| 6 | Wasterenew_china | CHINA | HIGH | 30000 | 60 | 5000000 | 55 | 20AUG2018 | 01JAN2025 | CHINA_Waste | HIGH |
| 7 | Econova_canada | CANADA | MEDIUM | 13000 | 88 | 5300000 | 87 | 18SEP2013 | 01JAN2025 | CANADA_Econo | MEDIUM |
| 8 | Recyclehub_aus | AUSTRALIA | MEDIUM | 9000 | 82 | 3900000 | 80 | 11NOV2017 | 01JAN2025 | AUSTRALIA_Recyc | LOW |
| 9 | Greenearth_india | INDIA | LOW | 14000 | 90 | 5200000 | 92 | 09APR2014 | 01JAN2025 | INDIA_Green | MEDIUM |
| 10 | Techwaste_usa | USA | HIGH | 21000 | 58 | 8700000 | 60 | 07JUL2019 | 01JAN2025 | USA_Techw | HIGH |
| 11 | Ecosphere_uk | UK | MEDIUM | 12500 | 86 | 4600000 | 85 | 03MAR2015 | 01JAN2025 | UK_Ecosp | MEDIUM |
| 12 | Zerowaste_japan | JAPAN | LOW | 16000 | 91 | 6800000 | 94 | 25DEC2010 | 01JAN2025 | JAPAN_Zerow | MEDIUM |
| 13 | Cleancircuit_germany | GERMANY | MEDIUM | 14500 | 88 | 6000000 | 89 | 14JAN2013 | 01JAN2025 | GERMANY_Clean | MEDIUM |
| 14 | Recyclemax_india | INDIA | HIGH | 20000 | 62 | 7100000 | 65 | 02FEB2020 | 01JAN2025 | INDIA_Recyc | HIGH |
| 15 | Ecofuture_usa | USA | MEDIUM | 15500 | 87 | 5900000 | 88 | 06JUN2016 | 01JAN2025 | USA_Ecofu | MEDIUM |
| 16 | Urbangreen_canada | CANADA | MEDIUM | 13500 | 84 | 5100000 | 86 | 19SEP2014 | 01JAN2025 | CANADA_Urban | MEDIUM |
| 17 | Greenmetal_china | CHINA | HIGH | 28000 | 65 | 5400000 | 58 | 21OCT2018 | 01JAN2025 | CHINA_Green | HIGH |
| 18 | Ecoloop_aus | AUSTRALIA | LOW | 9500 | 83 | 3700000 | 82 | 13NOV2016 | 01JAN2025 | AUSTRALIA_Ecolo | LOW |
· High utilization = heavy capacity usage
· Medium = stable operations
· Low = under-utilized facility
10. FRAUD DETECTION MACRO
%macro fraud_detection;
data ewaste_fraud;
set ewaste_util;
if Recovery_Rate < 65 and Operating_Cost > 7000000 then Fraud_Flag='Y';
else Fraud_Flag='N';
run;
proc print data=ewaste_fraud;
run;
%mend;
%fraud_detection;
OUTPUT:
| Obs | Facility_Name | Country | Hazard_Level | Waste_Processed_Tons | Recovery_Rate | Operating_Cost | Sustainability_Score | Start_Date | Report_Date | Facility_ID | Utilization_Class | Fraud_Flag |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Ecocycle_india | INDIA | LOW | 12000 | 85 | 4500000 | 88 | 01JAN2015 | 01JAN2025 | INDIA_Ecocy | MEDIUM | N |
| 2 | Greenloop_usa | USA | MEDIUM | 18000 | 92 | 8200000 | 91 | 15MAR2012 | 01JAN2025 | USA_Green | HIGH | N |
| 3 | Retech_germany | GERMANY | LOW | 15000 | 89 | 6100000 | 90 | 10FEB2014 | 01JAN2025 | GERMANY_Retec | MEDIUM | N |
| 4 | Urbanrecycle_uk | UK | HIGH | 11000 | 78 | 4000000 | 72 | 05MAY2016 | 01JAN2025 | UK_Urban | LOW | N |
| 5 | Ecoreclaim_japan | JAPAN | LOW | 17000 | 94 | 7500000 | 95 | 12JUN2011 | 01JAN2025 | JAPAN_Ecore | MEDIUM | N |
| 6 | Wasterenew_china | CHINA | HIGH | 30000 | 60 | 5000000 | 55 | 20AUG2018 | 01JAN2025 | CHINA_Waste | HIGH | N |
| 7 | Econova_canada | CANADA | MEDIUM | 13000 | 88 | 5300000 | 87 | 18SEP2013 | 01JAN2025 | CANADA_Econo | MEDIUM | N |
| 8 | Recyclehub_aus | AUSTRALIA | MEDIUM | 9000 | 82 | 3900000 | 80 | 11NOV2017 | 01JAN2025 | AUSTRALIA_Recyc | LOW | N |
| 9 | Greenearth_india | INDIA | LOW | 14000 | 90 | 5200000 | 92 | 09APR2014 | 01JAN2025 | INDIA_Green | MEDIUM | N |
| 10 | Techwaste_usa | USA | HIGH | 21000 | 58 | 8700000 | 60 | 07JUL2019 | 01JAN2025 | USA_Techw | HIGH | Y |
| 11 | Ecosphere_uk | UK | MEDIUM | 12500 | 86 | 4600000 | 85 | 03MAR2015 | 01JAN2025 | UK_Ecosp | MEDIUM | N |
| 12 | Zerowaste_japan | JAPAN | LOW | 16000 | 91 | 6800000 | 94 | 25DEC2010 | 01JAN2025 | JAPAN_Zerow | MEDIUM | N |
| 13 | Cleancircuit_germany | GERMANY | MEDIUM | 14500 | 88 | 6000000 | 89 | 14JAN2013 | 01JAN2025 | GERMANY_Clean | MEDIUM | N |
| 14 | Recyclemax_india | INDIA | HIGH | 20000 | 62 | 7100000 | 65 | 02FEB2020 | 01JAN2025 | INDIA_Recyc | HIGH | Y |
| 15 | Ecofuture_usa | USA | MEDIUM | 15500 | 87 | 5900000 | 88 | 06JUN2016 | 01JAN2025 | USA_Ecofu | MEDIUM | N |
| 16 | Urbangreen_canada | CANADA | MEDIUM | 13500 | 84 | 5100000 | 86 | 19SEP2014 | 01JAN2025 | CANADA_Urban | MEDIUM | N |
| 17 | Greenmetal_china | CHINA | HIGH | 28000 | 65 | 5400000 | 58 | 21OCT2018 | 01JAN2025 | CHINA_Green | HIGH | N |
| 18 | Ecoloop_aus | AUSTRALIA | LOW | 9500 | 83 | 3700000 | 82 | 13NOV2016 | 01JAN2025 | AUSTRALIA_Ecolo | LOW | N |
· Low recovery + high cost = suspicious
· Used by auditors & regulators
11. DATE CALCULATIONS
data ewaste_dates;
set ewaste_fraud;
Years_Operating = intck('year', Start_Date, Report_Date);
Next_Audit = intnx('year', Report_Date, 1, 'same');
run;
proc print data=ewaste_dates;
run;
OUTPUT:
| Obs | Facility_Name | Country | Hazard_Level | Waste_Processed_Tons | Recovery_Rate | Operating_Cost | Sustainability_Score | Start_Date | Report_Date | Facility_ID | Utilization_Class | Fraud_Flag | Years_Operating | Next_Audit |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Ecocycle_india | INDIA | LOW | 12000 | 85 | 4500000 | 88 | 01JAN2015 | 01JAN2025 | INDIA_Ecocy | MEDIUM | N | 10 | 24107 |
| 2 | Greenloop_usa | USA | MEDIUM | 18000 | 92 | 8200000 | 91 | 15MAR2012 | 01JAN2025 | USA_Green | HIGH | N | 13 | 24107 |
| 3 | Retech_germany | GERMANY | LOW | 15000 | 89 | 6100000 | 90 | 10FEB2014 | 01JAN2025 | GERMANY_Retec | MEDIUM | N | 11 | 24107 |
| 4 | Urbanrecycle_uk | UK | HIGH | 11000 | 78 | 4000000 | 72 | 05MAY2016 | 01JAN2025 | UK_Urban | LOW | N | 9 | 24107 |
| 5 | Ecoreclaim_japan | JAPAN | LOW | 17000 | 94 | 7500000 | 95 | 12JUN2011 | 01JAN2025 | JAPAN_Ecore | MEDIUM | N | 14 | 24107 |
| 6 | Wasterenew_china | CHINA | HIGH | 30000 | 60 | 5000000 | 55 | 20AUG2018 | 01JAN2025 | CHINA_Waste | HIGH | N | 7 | 24107 |
| 7 | Econova_canada | CANADA | MEDIUM | 13000 | 88 | 5300000 | 87 | 18SEP2013 | 01JAN2025 | CANADA_Econo | MEDIUM | N | 12 | 24107 |
| 8 | Recyclehub_aus | AUSTRALIA | MEDIUM | 9000 | 82 | 3900000 | 80 | 11NOV2017 | 01JAN2025 | AUSTRALIA_Recyc | LOW | N | 8 | 24107 |
| 9 | Greenearth_india | INDIA | LOW | 14000 | 90 | 5200000 | 92 | 09APR2014 | 01JAN2025 | INDIA_Green | MEDIUM | N | 11 | 24107 |
| 10 | Techwaste_usa | USA | HIGH | 21000 | 58 | 8700000 | 60 | 07JUL2019 | 01JAN2025 | USA_Techw | HIGH | Y | 6 | 24107 |
| 11 | Ecosphere_uk | UK | MEDIUM | 12500 | 86 | 4600000 | 85 | 03MAR2015 | 01JAN2025 | UK_Ecosp | MEDIUM | N | 10 | 24107 |
| 12 | Zerowaste_japan | JAPAN | LOW | 16000 | 91 | 6800000 | 94 | 25DEC2010 | 01JAN2025 | JAPAN_Zerow | MEDIUM | N | 15 | 24107 |
| 13 | Cleancircuit_germany | GERMANY | MEDIUM | 14500 | 88 | 6000000 | 89 | 14JAN2013 | 01JAN2025 | GERMANY_Clean | MEDIUM | N | 12 | 24107 |
| 14 | Recyclemax_india | INDIA | HIGH | 20000 | 62 | 7100000 | 65 | 02FEB2020 | 01JAN2025 | INDIA_Recyc | HIGH | Y | 5 | 24107 |
| 15 | Ecofuture_usa | USA | MEDIUM | 15500 | 87 | 5900000 | 88 | 06JUN2016 | 01JAN2025 | USA_Ecofu | MEDIUM | N | 9 | 24107 |
| 16 | Urbangreen_canada | CANADA | MEDIUM | 13500 | 84 | 5100000 | 86 | 19SEP2014 | 01JAN2025 | CANADA_Urban | MEDIUM | N | 11 | 24107 |
| 17 | Greenmetal_china | CHINA | HIGH | 28000 | 65 | 5400000 | 58 | 21OCT2018 | 01JAN2025 | CHINA_Green | HIGH | N | 7 | 24107 |
| 18 | Ecoloop_aus | AUSTRALIA | LOW | 9500 | 83 | 3700000 | 82 | 13NOV2016 | 01JAN2025 | AUSTRALIA_Ecolo | LOW | N | 9 | 24107 |
12. PROC SQL – BUSINESS QUERIES
proc sql;
create table cost_efficiency as
select Country,
avg(Waste_Processed_Tons) as Avg_Waste,
avg(Recovery_Rate) as Avg_Recovery,
avg(Operating_Cost) as Avg_Cost
from ewaste_dates
group by Country;
quit;
proc print data=cost_efficiency;
run;
OUTPUT:
| Obs | Country | Avg_Waste | Avg_Recovery | Avg_Cost |
|---|---|---|---|---|
| 1 | AUSTRALIA | 9250.00 | 82.5 | 3800000 |
| 2 | CANADA | 13250.00 | 86.0 | 5200000 |
| 3 | CHINA | 29000.00 | 62.5 | 5200000 |
| 4 | GERMANY | 14750.00 | 88.5 | 6050000 |
| 5 | INDIA | 15333.33 | 79.0 | 5600000 |
| 6 | JAPAN | 16500.00 | 92.5 | 7150000 |
| 7 | UK | 11750.00 | 82.0 | 4300000 |
| 8 | USA | 18166.67 | 79.0 | 7600000 |
· Complex grouping
· Cleaner syntax
· Industry-preferred
13. PROC FREQ – CATEGORICAL ANALYSIS
proc freq data=ewaste_dates;
tables Country*Hazard_Level Fraud_Flag / nocum nopercent;
run;
OUTPUT:
The FREQ Procedure
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fraud_Flag | Frequency |
|---|---|
| N | 16 |
| Y | 2 |
14. PROC MEANS – NUMERIC SUMMARY
proc means data=ewaste_dates mean min max;
var Waste_Processed_Tons Recovery_Rate Operating_Cost Sustainability_Score;
run;
OUTPUT:
The MEANS Procedure
| Variable | Mean | Minimum | Maximum |
|---|---|---|---|
Waste_Processed_Tons Recovery_Rate Operating_Cost Sustainability_Score | 16083.33 81.2222222 5722222.22 80.9444444 | 9000.00 58.0000000 3700000.00 55.0000000 | 30000.00 94.0000000 8700000.00 95.0000000 |
15. PROC UNIVARIATE – DISTRIBUTION
proc univariate data=ewaste_dates;
var Recovery_Rate Operating_Cost;
histogram Recovery_Rate;
run;
OUTPUT:
The UNIVARIATE Procedure
Variable: Recovery_Rate
| Moments | |||
|---|---|---|---|
| N | 18 | Sum Weights | 18 |
| Mean | 81.2222222 | Sum Observations | 1462 |
| Std Deviation | 11.6798245 | Variance | 136.418301 |
| Skewness | -1.1238977 | Kurtosis | -0.1687343 |
| Uncorrected SS | 121066 | Corrected SS | 2319.11111 |
| Coeff Variation | 14.3800849 | Std Error Mean | 2.75296104 |
| Basic Statistical Measures | |||
|---|---|---|---|
| Location | Variability | ||
| Mean | 81.22222 | Std Deviation | 11.67982 |
| Median | 85.50000 | Variance | 136.41830 |
| Mode | 88.00000 | Range | 36.00000 |
| Interquartile Range | 11.00000 | ||
| Tests for Location: Mu0=0 | ||||
|---|---|---|---|---|
| Test | Statistic | p Value | ||
| Student's t | t | 29.50359 | Pr > |t| | <.0001 |
| Sign | M | 9 | Pr >= |M| | <.0001 |
| Signed Rank | S | 85.5 | Pr >= |S| | <.0001 |
| Quantiles (Definition 5) | |
|---|---|
| Level | Quantile |
| 100% Max | 94.0 |
| 99% | 94.0 |
| 95% | 94.0 |
| 90% | 92.0 |
| 75% Q3 | 89.0 |
| 50% Median | 85.5 |
| 25% Q1 | 78.0 |
| 10% | 60.0 |
| 5% | 58.0 |
| 1% | 58.0 |
| 0% Min | 58.0 |
| Extreme Observations | |||
|---|---|---|---|
| Lowest | Highest | ||
| Value | Obs | Value | Obs |
| 58 | 10 | 89 | 3 |
| 60 | 6 | 90 | 9 |
| 62 | 14 | 91 | 12 |
| 65 | 17 | 92 | 2 |
| 78 | 4 | 94 | 5 |
The UNIVARIATE Procedure
The UNIVARIATE Procedure
Variable: Operating_Cost
| Moments | |||
|---|---|---|---|
| N | 18 | Sum Weights | 18 |
| Mean | 5722222.22 | Sum Observations | 103000000 |
| Std Deviation | 1456650.29 | Variance | 2.12183E12 |
| Skewness | 0.59195226 | Kurtosis | -0.40658 |
| Uncorrected SS | 6.2546E14 | Corrected SS | 3.60711E13 |
| Coeff Variation | 25.4560245 | Std Error Mean | 343335.766 |
| Basic Statistical Measures | |||
|---|---|---|---|
| Location | Variability | ||
| Mean | 5722222 | Std Deviation | 1456650 |
| Median | 5350000 | Variance | 2.12183E12 |
| Mode | . | Range | 5000000 |
| Interquartile Range | 2200000 | ||
| Tests for Location: Mu0=0 | ||||
|---|---|---|---|---|
| Test | Statistic | p Value | ||
| Student's t | t | 16.66655 | Pr > |t| | <.0001 |
| Sign | M | 9 | Pr >= |M| | <.0001 |
| Signed Rank | S | 85.5 | Pr >= |S| | <.0001 |
| Quantiles (Definition 5) | |
|---|---|
| Level | Quantile |
| 100% Max | 8700000 |
| 99% | 8700000 |
| 95% | 8700000 |
| 90% | 8200000 |
| 75% Q3 | 6800000 |
| 50% Median | 5350000 |
| 25% Q1 | 4600000 |
| 10% | 3900000 |
| 5% | 3700000 |
| 1% | 3700000 |
| 0% Min | 3700000 |
| Extreme Observations | |||
|---|---|---|---|
| Lowest | Highest | ||
| Value | Obs | Value | Obs |
| 3700000 | 18 | 6800000 | 12 |
| 3900000 | 8 | 7100000 | 14 |
| 4000000 | 4 | 7500000 | 5 |
| 4500000 | 1 | 8200000 | 2 |
| 4600000 | 11 | 8700000 | 10 |
16. PROC CORR – RELATIONSHIP ANALYSIS
proc corr data=ewaste_dates;
var Waste_Processed_Tons Recovery_Rate Operating_Cost Sustainability_Score;
run;
OUTPUT:
The CORR Procedure
| 4 Variables: | Waste_Processed_Tons Recovery_Rate Operating_Cost Sustainability_Score |
|---|
| Simple Statistics | ||||||
|---|---|---|---|---|---|---|
| Variable | N | Mean | Std Dev | Sum | Minimum | Maximum |
| Waste_Processed_Tons | 18 | 16083 | 5704 | 289500 | 9000 | 30000 |
| Recovery_Rate | 18 | 81.22222 | 11.67982 | 1462 | 58.00000 | 94.00000 |
| Operating_Cost | 18 | 5722222 | 1456650 | 103000000 | 3700000 | 8700000 |
| Sustainability_Score | 18 | 80.94444 | 13.04054 | 1457 | 55.00000 | 95.00000 |
| Pearson Correlation Coefficients, N = 18 Prob > |r| under H0: Rho=0 | ||||
|---|---|---|---|---|
| Waste_Processed_Tons | Recovery_Rate | Operating_Cost | Sustainability_Score | |
| Waste_Processed_Tons | 1.00000 | -0.66117 0.0028 | 0.42100 0.0819 | -0.67093 0.0023 |
| Recovery_Rate | -0.66117 0.0028 | 1.00000 | -0.09643 0.7035 | 0.97526 <.0001 |
| Operating_Cost | 0.42100 0.0819 | -0.09643 0.7035 | 1.00000 | 0.00936 0.9706 |
| Sustainability_Score | -0.67093 0.0023 | 0.97526 <.0001 | 0.00936 0.9706 | 1.00000 |
17. PROC SGPLOT – VISUALIZATION
proc sgplot data=ewaste_dates;
scatter x=Operating_Cost y=Recovery_Rate / group=Hazard_Level;
run;
OUTPUT:
18. APPEND, TRANSPOSE
Creating New Data
data ewaste_new_batch;
length Facility_Name $30 Country $15 Hazard_Level $10 Utilization_Class $10 Fraud_Flag $1;
input Facility_Name $ Country $ Waste_Processed_Tons Recovery_Rate Hazard_Level $
Operating_Cost Sustainability_Score Start_Date :date9. Report_Date :date9.
Utilization_Class $ Fraud_Flag $;
format Start_Date Report_Date date9.;
datalines;
NeoRecycle_India INDIA 16000 88 LOW 5800000 90 01JAN2016 01FEB2025 MEDIUM N
SmartEcycle_USA USA 22000 59 HIGH 9100000 62 15MAR2019 01FEB2025 HIGH Y
EcoRenew_UK UK 10000 84 MEDIUM 4200000 83 10APR2017 01FEB2025 LOW N
;
run;
proc print data=ewaste_new_batch;
run;
OUTPUT:
| Obs | Facility_Name | Country | Hazard_Level | Utilization_Class | Fraud_Flag | Waste_Processed_Tons | Recovery_Rate | Operating_Cost | Sustainability_Score | Start_Date | Report_Date |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | NeoRecycle_India | INDIA | LOW | MEDIUM | N | 16000 | 88 | 5800000 | 90 | 01JAN2016 | 01FEB2025 |
| 2 | SmartEcycle_USA | USA | HIGH | HIGH | Y | 22000 | 59 | 9100000 | 62 | 15MAR2019 | 01FEB2025 |
| 3 | EcoRenew_UK | UK | MEDIUM | LOW | N | 10000 | 84 | 4200000 | 83 | 10APR2017 | 01FEB2025 |
proc append base=ewaste_dates
data=ewaste_new_batch force;
run;
proc print data=ewaste_dates;
run;
OUTPUT:
| Obs | Facility_Name | Country | Hazard_Level | Waste_Processed_Tons | Recovery_Rate | Operating_Cost | Sustainability_Score | Start_Date | Report_Date | Facility_ID | Utilization_Class | Fraud_Flag | Years_Operating | Next_Audit |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Ecocycle_india | INDIA | LOW | 12000 | 85 | 4500000 | 88 | 01JAN2015 | 01JAN2025 | INDIA_Ecocy | MEDIUM | N | 10 | 24107 |
| 2 | Greenloop_usa | USA | MEDIUM | 18000 | 92 | 8200000 | 91 | 15MAR2012 | 01JAN2025 | USA_Green | HIGH | N | 13 | 24107 |
| 3 | Retech_germany | GERMANY | LOW | 15000 | 89 | 6100000 | 90 | 10FEB2014 | 01JAN2025 | GERMANY_Retec | MEDIUM | N | 11 | 24107 |
| 4 | Urbanrecycle_uk | UK | HIGH | 11000 | 78 | 4000000 | 72 | 05MAY2016 | 01JAN2025 | UK_Urban | LOW | N | 9 | 24107 |
| 5 | Ecoreclaim_japan | JAPAN | LOW | 17000 | 94 | 7500000 | 95 | 12JUN2011 | 01JAN2025 | JAPAN_Ecore | MEDIUM | N | 14 | 24107 |
| 6 | Wasterenew_china | CHINA | HIGH | 30000 | 60 | 5000000 | 55 | 20AUG2018 | 01JAN2025 | CHINA_Waste | HIGH | N | 7 | 24107 |
| 7 | Econova_canada | CANADA | MEDIUM | 13000 | 88 | 5300000 | 87 | 18SEP2013 | 01JAN2025 | CANADA_Econo | MEDIUM | N | 12 | 24107 |
| 8 | Recyclehub_aus | AUSTRALIA | MEDIUM | 9000 | 82 | 3900000 | 80 | 11NOV2017 | 01JAN2025 | AUSTRALIA_Recyc | LOW | N | 8 | 24107 |
| 9 | Greenearth_india | INDIA | LOW | 14000 | 90 | 5200000 | 92 | 09APR2014 | 01JAN2025 | INDIA_Green | MEDIUM | N | 11 | 24107 |
| 10 | Techwaste_usa | USA | HIGH | 21000 | 58 | 8700000 | 60 | 07JUL2019 | 01JAN2025 | USA_Techw | HIGH | Y | 6 | 24107 |
| 11 | Ecosphere_uk | UK | MEDIUM | 12500 | 86 | 4600000 | 85 | 03MAR2015 | 01JAN2025 | UK_Ecosp | MEDIUM | N | 10 | 24107 |
| 12 | Zerowaste_japan | JAPAN | LOW | 16000 | 91 | 6800000 | 94 | 25DEC2010 | 01JAN2025 | JAPAN_Zerow | MEDIUM | N | 15 | 24107 |
| 13 | Cleancircuit_germany | GERMANY | MEDIUM | 14500 | 88 | 6000000 | 89 | 14JAN2013 | 01JAN2025 | GERMANY_Clean | MEDIUM | N | 12 | 24107 |
| 14 | Recyclemax_india | INDIA | HIGH | 20000 | 62 | 7100000 | 65 | 02FEB2020 | 01JAN2025 | INDIA_Recyc | HIGH | Y | 5 | 24107 |
| 15 | Ecofuture_usa | USA | MEDIUM | 15500 | 87 | 5900000 | 88 | 06JUN2016 | 01JAN2025 | USA_Ecofu | MEDIUM | N | 9 | 24107 |
| 16 | Urbangreen_canada | CANADA | MEDIUM | 13500 | 84 | 5100000 | 86 | 19SEP2014 | 01JAN2025 | CANADA_Urban | MEDIUM | N | 11 | 24107 |
| 17 | Greenmetal_china | CHINA | HIGH | 28000 | 65 | 5400000 | 58 | 21OCT2018 | 01JAN2025 | CHINA_Green | HIGH | N | 7 | 24107 |
| 18 | Ecoloop_aus | AUSTRALIA | LOW | 9500 | 83 | 3700000 | 82 | 13NOV2016 | 01JAN2025 | AUSTRALIA_Ecolo | LOW | N | 9 | 24107 |
| 19 | NeoRecycle_India | INDIA | LOW | 16000 | 88 | 5800000 | 90 | 01JAN2016 | 01FEB2025 | MEDIUM | N | . | . | |
| 20 | SmartEcycle_USA | USA | HIGH | 22000 | 59 | 9100000 | 62 | 15MAR2019 | 01FEB2025 | HIGH | Y | . | . | |
| 21 | EcoRenew_UK | UK | MEDIUM | 10000 | 84 | 4200000 | 83 | 10APR2017 | 01FEB2025 | LOW | N | . | . |
proc transpose data=ewaste_dates out=ewaste_transposed;
var Waste_Processed_Tons Recovery_Rate;
by Country NotSorted;
run;
proc print data=ewaste_transposed;
run;
OUTPUT:
| Obs | Country | _NAME_ | COL1 |
|---|---|---|---|
| 1 | INDIA | Waste_Processed_Tons | 12000 |
| 2 | INDIA | Recovery_Rate | 85 |
| 3 | USA | Waste_Processed_Tons | 18000 |
| 4 | USA | Recovery_Rate | 92 |
| 5 | GERMANY | Waste_Processed_Tons | 15000 |
| 6 | GERMANY | Recovery_Rate | 89 |
| 7 | UK | Waste_Processed_Tons | 11000 |
| 8 | UK | Recovery_Rate | 78 |
| 9 | JAPAN | Waste_Processed_Tons | 17000 |
| 10 | JAPAN | Recovery_Rate | 94 |
| 11 | CHINA | Waste_Processed_Tons | 30000 |
| 12 | CHINA | Recovery_Rate | 60 |
| 13 | CANADA | Waste_Processed_Tons | 13000 |
| 14 | CANADA | Recovery_Rate | 88 |
| 15 | AUSTRALIA | Waste_Processed_Tons | 9000 |
| 16 | AUSTRALIA | Recovery_Rate | 82 |
| 17 | INDIA | Waste_Processed_Tons | 14000 |
| 18 | INDIA | Recovery_Rate | 90 |
| 19 | USA | Waste_Processed_Tons | 21000 |
| 20 | USA | Recovery_Rate | 58 |
| 21 | UK | Waste_Processed_Tons | 12500 |
| 22 | UK | Recovery_Rate | 86 |
| 23 | JAPAN | Waste_Processed_Tons | 16000 |
| 24 | JAPAN | Recovery_Rate | 91 |
| 25 | GERMANY | Waste_Processed_Tons | 14500 |
| 26 | GERMANY | Recovery_Rate | 88 |
| 27 | INDIA | Waste_Processed_Tons | 20000 |
| 28 | INDIA | Recovery_Rate | 62 |
| 29 | USA | Waste_Processed_Tons | 15500 |
| 30 | USA | Recovery_Rate | 87 |
| 31 | CANADA | Waste_Processed_Tons | 13500 |
| 32 | CANADA | Recovery_Rate | 84 |
| 33 | CHINA | Waste_Processed_Tons | 28000 |
| 34 | CHINA | Recovery_Rate | 65 |
| 35 | AUSTRALIA | Waste_Processed_Tons | 9500 |
| 36 | AUSTRALIA | Recovery_Rate | 83 |
| 37 | INDIA | Waste_Processed_Tons | 16000 |
| 38 | INDIA | Recovery_Rate | 88 |
| 39 | USA | Waste_Processed_Tons | 22000 |
| 40 | USA | Recovery_Rate | 59 |
| 41 | UK | Waste_Processed_Tons | 10000 |
| 42 | UK | Recovery_Rate | 84 |
19. PROC DATASETS – CLEANUP
proc datasets library=work nolist;
delete ewaste_transposed;
quit;
LOG:
20. BUSINESS INSIGHTS
- High hazard facilities often show lower recovery
- Fraud-flagged facilities cluster in high-cost regions
- Sustainability correlates positively with recovery
21. HIT POINTS
✔ Realistic business logic
✔ Strong macro usage
✔ CDISC-style audit thinking
✔ Clean coding practices
✔ Visualization + statistics
22. CONCLUSION
This project demonstrates full-stack SAS programming:
- Data engineering
- Statistical analysis
- Business intelligence
- Fraud detection
- Sustainability analytics
It is perfect for interviews, portfolios, and senior-level discussions.
INTERVIEW QUESTIONS FOR YOU
· What is the difference between PROC SQL and DATA step?
· What is an INNER JOIN vs LEFT JOIN?
· How do you remove duplicate rows using SQL?
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
About the Author:
SAS Learning Hub is a data analytics and SAS programming platform focused on clinical, financial, and real-world data analysis. The content is created by professionals with academic training in Pharmaceutics and hands-on experience in Base SAS, PROC SQL, Macros, SDTM, and ADaM, providing practical and industry-relevant SAS learning resources.
Disclaimer:
The datasets and analysis in this article are created for educational and demonstration purposes only. They do not represent E-WASTE data.
Our Mission:
This blog provides industry-focused SAS programming tutorials and analytics projects covering finance, healthcare, and technology.
This project is suitable for:
· Students learning SAS
· Data analysts building portfolios
· Professionals preparing for SAS interviews
· Bloggers writing about analytics and smart cities
· EV and energy industry professionals
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Follow Us On :
To deepen your understanding of SAS analytics, please refer to our other data science and industry-focused projects listed below:
3.How Can SAS Be Used to Analyze Intermediate Students Performance
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Comments
Post a Comment