382.How Do You Detect Hidden Fraud Inside EV Charging Networks Using SAS Analytics?

How Do You Detect Hidden Fraud Inside EV Charging Networks Using SAS Analytics?


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 SORT | PROC DATASETS DELETE


Introduction – Why EV Charging Data Matters

Electric vehicles (EVs) are transforming the global transportation industry. Governments, automobile manufacturers, and energy companies are investing billions of dollars to build large-scale EV charging networks across cities, highways, and commercial zones.

However, building charging stations is only the first step. The real challenge lies in operating them efficiently, reliably, and profitably.

EV network operators must continuously analyze:

·       How many users are visiting each station

·       How long drivers wait for charging

·       Whether stations are overloaded or underused

·       Which chargers are reliable

·       Whether abnormal usage patterns indicate fraud, misuse, or revenue leakage

This is where data analytics using SAS becomes a powerful tool.


Dataset Overview – EV Charging Stations

The dataset created in this project represents EV charging stations installed across multiple Indian cities. Each row corresponds to a single charging station.

The dataset contains operational, technical, and reliability metrics such as:

  • Station ID

  • City

  • Type of charger (Fast, Normal, Ultra-fast)

  • Charging power in kilowatts

  • Average waiting time

  • Number of daily users

  • Reliability score

  • Installation date


1. BUSINESS CONTEXT

Electric Vehicle (EV) infrastructure is one of the fastest growing industries in the world.
Charging station companies continuously analyze:

  • City-wise demand
  • Charger utilization
  • Waiting time
  • Reliability
  • Revenue leakage
  • Abnormal station behaviour

2. EV CHARGING STATION RAW DATA CREATION

data ev_stations_raw;

    length Station_ID $10 City $20 Charging_Type $15;

    format Install_Date date9.;

    input Station_ID $ City $ Charging_Type $ Power_kW Avg_Wait_Time Daily_Users 

          Reliability_Score Install_Date : date9.;

    datalines;

EV001 Hyderabad Fast 120 18 340 92 01JAN2023

EV002 Bengaluru Fast 150 22 380 88 15JAN2023

EV003 Chennai Normal 60 35 220 80 10FEB2023

EV004 Delhi Fast 180 15 410 95 01MAR2023

EV005 Mumbai Ultra 250 10 520 97 15MAR2023

EV006 Pune Normal 80 40 200 78 10APR2023

EV007 Kochi Fast 140 25 310 85 01MAY2023

EV008 Trivandrum Normal 70 45 180 75 20MAY2023

EV009 Jaipur Fast 130 30 290 82 10JUN2023

EV010 Chandigarh Fast 160 20 350 90 01JUL2023

EV011 Ahmedabad Ultra 240 12 480 96 15JUL2023

EV012 Indore Normal 75 38 210 79 01AUG2023

EV013 Nagpur Fast 135 28 300 84 15AUG2023

EV014 Vizag Normal 65 42 190 77 01SEP2023

EV015 Coimbatore Fast 145 24 320 89 15SEP2023

;

run;

proc print data=ev_stations_raw;

run;

OUTPUT:

ObsStation_IDCityCharging_TypeInstall_DatePower_kWAvg_Wait_TimeDaily_UsersReliability_Score
1EV001HyderabadFast01JAN20231201834092
2EV002BengaluruFast15JAN20231502238088
3EV003ChennaiNormal10FEB2023603522080
4EV004DelhiFast01MAR20231801541095
5EV005MumbaiUltra15MAR20232501052097
6EV006PuneNormal10APR2023804020078
7EV007KochiFast01MAY20231402531085
8EV008TrivandrumNormal20MAY2023704518075
9EV009JaipurFast10JUN20231303029082
10EV010ChandigarhFast01JUL20231602035090
11EV011AhmedabadUltra15JUL20232401248096
12EV012IndoreNormal01AUG2023753821079
13EV013NagpurFast15AUG20231352830084
14EV014VizagNormal01SEP2023654219077
15EV015CoimbatoreFast15SEP20231452432089

Why this code is used

·       Structured EV dataset

·       Realistic business variables

·       Date-driven system

What it does

·       Creates EV stations table

·       Stores performance metrics

·       Adds installation date

Why required

·       Base analytics

·       Source of truth

·       Simulation realism

Interview angle

·       DATA step mastery

·       Format usage

·       Input control


3. DATE ENGINEERING (MDY, INTCK, INTNX)

data ev_dates;

    set ev_stations_raw;

    Review_Date = mdy(12,31,2024);

    Operational_Days = intck('day', Install_Date, Review_Date);

    Next_Service = intnx('month', Install_Date, 6);

    format Review_Date Next_Service date9.;

run;

proc print data=ev_dates;

run;

 OUTPUT:

ObsStation_IDCityCharging_TypeInstall_DatePower_kWAvg_Wait_TimeDaily_UsersReliability_ScoreReview_DateOperational_DaysNext_Service
1EV001HyderabadFast01JAN2023120183409231DEC202473001JUL2023
2EV002BengaluruFast15JAN2023150223808831DEC202471601JUL2023
3EV003ChennaiNormal10FEB202360352208031DEC202469001AUG2023
4EV004DelhiFast01MAR2023180154109531DEC202467101SEP2023
5EV005MumbaiUltra15MAR2023250105209731DEC202465701SEP2023
6EV006PuneNormal10APR202380402007831DEC202463101OCT2023
7EV007KochiFast01MAY2023140253108531DEC202461001NOV2023
8EV008TrivandrumNormal20MAY202370451807531DEC202459101NOV2023
9EV009JaipurFast10JUN2023130302908231DEC202457001DEC2023
10EV010ChandigarhFast01JUL2023160203509031DEC202454901JAN2024
11EV011AhmedabadUltra15JUL2023240124809631DEC202453501JAN2024
12EV012IndoreNormal01AUG202375382107931DEC202451801FEB2024
13EV013NagpurFast15AUG2023135283008431DEC202450401FEB2024
14EV014VizagNormal01SEP202365421907731DEC202448701MAR2024
15EV015CoimbatoreFast15SEP2023145243208931DEC202447301MAR2024

Why this code is used

·       Time-based analytics

·       Lifecycle tracking

·       Service scheduling

What it does

·       Calculates operating days

·       Predicts next service

·       Fixes review date

Why required

·       Asset lifecycle

·       Maintenance planning

·       KPI trends

Interview angle

·       INTCK vs INTNX

·       MDY usage

·       Date arithmetic


4. CHARACTER & NUMERIC FUNCTIONS

data ev_clean;

    set ev_dates;

    City_Std = propcase(strip(City));

    Charger_Type = upcase(trim(Charging_Type));

    Station_Key = catx("-", Station_ID, City_Std);

    Reliability_Filled = coalesce(Reliability_Score, 0);

run;

proc print data=ev_clean;

 var Station_ID City City_Std Charger_Type Station_Key Reliability_Filled;

run;

OUTPUT:

ObsStation_IDCityCity_StdCharger_TypeStation_KeyReliability_Filled
1EV001HyderabadHyderabadFASTEV001-Hyderabad92
2EV002BengaluruBengaluruFASTEV002-Bengaluru88
3EV003ChennaiChennaiNORMALEV003-Chennai80
4EV004DelhiDelhiFASTEV004-Delhi95
5EV005MumbaiMumbaiULTRAEV005-Mumbai97
6EV006PunePuneNORMALEV006-Pune78
7EV007KochiKochiFASTEV007-Kochi85
8EV008TrivandrumTrivandrumNORMALEV008-Trivandrum75
9EV009JaipurJaipurFASTEV009-Jaipur82
10EV010ChandigarhChandigarhFASTEV010-Chandigarh90
11EV011AhmedabadAhmedabadULTRAEV011-Ahmedabad96
12EV012IndoreIndoreNORMALEV012-Indore79
13EV013NagpurNagpurFASTEV013-Nagpur84
14EV014VizagVizagNORMALEV014-Vizag77
15EV015CoimbatoreCoimbatoreFASTEV015-Coimbatore89

Why this code is used

·       Standardization

·       Key creation

·       Missing handling

What it does

·       Cleans city names

·       Formats charger type

·       Creates station key

Why required

·       Data quality

·       Joins

·       Reporting

Interview angle

·       CATX vs CAT

·       STRIP vs TRIM

·       COALESCE


5. PROC SQL – Business Layer

proc sql;

    create table ev_sql as

    select *,

           (Daily_Users * Power_kW) as Energy_Load,

           (Avg_Wait_Time / Power_kW) as Delay_Ratio

    from ev_clean;

quit;

proc print data=ev_sql;

run;

OUTPUT:

ObsStation_IDCityCharging_TypeInstall_DatePower_kWAvg_Wait_TimeDaily_UsersReliability_ScoreReview_DateOperational_DaysNext_ServiceCity_StdCharger_TypeStation_KeyReliability_FilledEnergy_LoadDelay_Ratio
1EV001HyderabadFast01JAN2023120183409231DEC202473001JUL2023HyderabadFASTEV001-Hyderabad92408000.15000
2EV002BengaluruFast15JAN2023150223808831DEC202471601JUL2023BengaluruFASTEV002-Bengaluru88570000.14667
3EV003ChennaiNormal10FEB202360352208031DEC202469001AUG2023ChennaiNORMALEV003-Chennai80132000.58333
4EV004DelhiFast01MAR2023180154109531DEC202467101SEP2023DelhiFASTEV004-Delhi95738000.08333
5EV005MumbaiUltra15MAR2023250105209731DEC202465701SEP2023MumbaiULTRAEV005-Mumbai971300000.04000
6EV006PuneNormal10APR202380402007831DEC202463101OCT2023PuneNORMALEV006-Pune78160000.50000
7EV007KochiFast01MAY2023140253108531DEC202461001NOV2023KochiFASTEV007-Kochi85434000.17857
8EV008TrivandrumNormal20MAY202370451807531DEC202459101NOV2023TrivandrumNORMALEV008-Trivandrum75126000.64286
9EV009JaipurFast10JUN2023130302908231DEC202457001DEC2023JaipurFASTEV009-Jaipur82377000.23077
10EV010ChandigarhFast01JUL2023160203509031DEC202454901JAN2024ChandigarhFASTEV010-Chandigarh90560000.12500
11EV011AhmedabadUltra15JUL2023240124809631DEC202453501JAN2024AhmedabadULTRAEV011-Ahmedabad961152000.05000
12EV012IndoreNormal01AUG202375382107931DEC202451801FEB2024IndoreNORMALEV012-Indore79157500.50667
13EV013NagpurFast15AUG2023135283008431DEC202450401FEB2024NagpurFASTEV013-Nagpur84405000.20741
14EV014VizagNormal01SEP202365421907731DEC202448701MAR2024VizagNORMALEV014-Vizag77123500.64615
15EV015CoimbatoreFast15SEP2023145243208931DEC202447301MAR2024CoimbatoreFASTEV015-Coimbatore89464000.16552

Why this code is used

·       Business metrics

·       SQL modeling

·       Virtual columns

What it does

·       Creates Energy Load

·       Calculates delay ratio

·       Enhances table

Why required

·       KPI engineering

·       Performance analytics

·       Optimization

Interview angle

·       SQL computed columns

·       Alias usage


6. UTILIZATION CLASSIFICATION MACRO

%macro utilization;

data ev_util;

    set ev_sql;

    if Daily_Users > 400 then Utilization="Overloaded";

    else if 250 <= Daily_Users <= 400 then Utilization = "Optimal";

    else Utilization="Underused";

run;

proc print data=ev_util;

run;

%mend;


%utilization;

OUTPUT:

ObsStation_IDCityCharging_TypeInstall_DatePower_kWAvg_Wait_TimeDaily_UsersReliability_ScoreReview_DateOperational_DaysNext_ServiceCity_StdCharger_TypeStation_KeyReliability_FilledEnergy_LoadDelay_RatioUtilization
1EV001HyderabadFast01JAN2023120183409231DEC202473001JUL2023HyderabadFASTEV001-Hyderabad92408000.15000Optimal
2EV002BengaluruFast15JAN2023150223808831DEC202471601JUL2023BengaluruFASTEV002-Bengaluru88570000.14667Optimal
3EV003ChennaiNormal10FEB202360352208031DEC202469001AUG2023ChennaiNORMALEV003-Chennai80132000.58333Underused
4EV004DelhiFast01MAR2023180154109531DEC202467101SEP2023DelhiFASTEV004-Delhi95738000.08333Overloaded
5EV005MumbaiUltra15MAR2023250105209731DEC202465701SEP2023MumbaiULTRAEV005-Mumbai971300000.04000Overloaded
6EV006PuneNormal10APR202380402007831DEC202463101OCT2023PuneNORMALEV006-Pune78160000.50000Underused
7EV007KochiFast01MAY2023140253108531DEC202461001NOV2023KochiFASTEV007-Kochi85434000.17857Optimal
8EV008TrivandrumNormal20MAY202370451807531DEC202459101NOV2023TrivandrumNORMALEV008-Trivandrum75126000.64286Underused
9EV009JaipurFast10JUN2023130302908231DEC202457001DEC2023JaipurFASTEV009-Jaipur82377000.23077Optimal
10EV010ChandigarhFast01JUL2023160203509031DEC202454901JAN2024ChandigarhFASTEV010-Chandigarh90560000.12500Optimal
11EV011AhmedabadUltra15JUL2023240124809631DEC202453501JAN2024AhmedabadULTRAEV011-Ahmedabad961152000.05000Overloaded
12EV012IndoreNormal01AUG202375382107931DEC202451801FEB2024IndoreNORMALEV012-Indore79157500.50667Underused
13EV013NagpurFast15AUG2023135283008431DEC202450401FEB2024NagpurFASTEV013-Nagpur84405000.20741Optimal
14EV014VizagNormal01SEP202365421907731DEC202448701MAR2024VizagNORMALEV014-Vizag77123500.64615Underused
15EV015CoimbatoreFast15SEP2023145243208931DEC202447301MAR2024CoimbatoreFASTEV015-Coimbatore89464000.16552Optimal

Why this code is used

·       Automation

·       Business rules

·       Reusability

What it does

·       Classifies stations

·       Labels utilization

·       Supports reporting

Why required

·       Capacity planning

·       Resource allocation

·       Decision support

Interview angle

·       Macro logic

·       Conditional coding

·       Automation


7. PROC MEANS

proc means data=ev_util;

    var Power_kW Avg_Wait_Time Daily_Users Reliability_Score Energy_Load;

run;

OUTPUT:

The MEANS Procedure

VariableNMeanStd DevMinimumMaximum
Power_kW
Avg_Wait_Time
Daily_Users
Reliability_Score
Energy_Load
15
15
15
15
15
133.3333333
26.9333333
313.3333333
85.8000000
47380.00
59.0600985
11.1449327
104.3118037
7.2624278
35938.24
60.0000000
10.0000000
180.0000000
75.0000000
12350.00
250.0000000
45.0000000
520.0000000
97.0000000
130000.00

Why this code is used

·       Descriptive statistics

·       Data profiling

·       Baseline metrics

What it does

·       Mean

·       Min

·       Max

·       Standard deviation

Why required

·       Performance summary

·       Data understanding

·       Management reporting

Interview angle

·       Descriptive analytics

·       KPI validation

·       Distribution check

8. PROC UNIVARIATE

proc univariate data=ev_util;

    var Daily_Users Avg_Wait_Time;

run;

OUTPUT:

The UNIVARIATE Procedure

Variable: Daily_Users

Moments
N15Sum Weights15
Mean313.333333Sum Observations4700
Std Deviation104.311804Variance10880.9524
Skewness0.51491293Kurtosis-0.4205403
Uncorrected SS1625000Corrected SS152333.333
Coeff Variation33.2910012Std Error Mean26.9331919
Basic Statistical Measures
LocationVariability
Mean313.3333Std Deviation104.31180
Median310.0000Variance10881
Mode.Range340.00000
  Interquartile Range170.00000
Tests for Location: Mu0=0
TestStatisticp Value
Student's tt11.63372Pr > |t|<.0001
SignM7.5Pr >= |M|<.0001
Signed RankS60Pr >= |S|<.0001
Quantiles (Definition 5)
LevelQuantile
100% Max520
99%520
95%520
90%480
75% Q3380
50% Median310
25% Q1210
10%190
5%180
1%180
0% Min180
Extreme Observations
LowestHighest
ValueObsValueObs
180835010
190143802
20064104
2101248011
22035205

The UNIVARIATE Procedure

Variable: Avg_Wait_Time

Moments
N15Sum Weights15
Mean26.9333333Sum Observations404
Std Deviation11.1449327Variance124.209524
Skewness0.14138813Kurtosis-1.1470983
Uncorrected SS12620Corrected SS1738.93333
Coeff Variation41.3797004Std Error Mean2.87760924
Basic Statistical Measures
LocationVariability
Mean26.93333Std Deviation11.14493
Median25.00000Variance124.20952
Mode.Range35.00000
  Interquartile Range20.00000
Tests for Location: Mu0=0
TestStatisticp Value
Student's tt9.359622Pr > |t|<.0001
SignM7.5Pr >= |M|<.0001
Signed RankS60Pr >= |S|<.0001
Quantiles (Definition 5)
LevelQuantile
100% Max45
99%45
95%45
90%42
75% Q338
50% Median25
25% Q118
10%12
5%10
1%10
0% Min10
Extreme Observations
LowestHighest
ValueObsValueObs
105353
12113812
154406
1814214
2010458

Why this code is used

·       Distribution analysis

·       Outlier detection

·       Skewness

What it does

·       Histogram stats

·       Percentiles

·       Extremes

Why required

·       Risk detection

·       Abnormal stations

·       Modeling readiness

Interview angle

·       Outlier handling

·       Statistical profiling

9. PROC CORR

proc corr data=ev_util;

    var Power_kW Daily_Users Avg_Wait_Time Reliability_Score;

run;

OUTPUT:

The CORR Procedure

4 Variables:Power_kW Daily_Users Avg_Wait_Time Reliability_Score
Simple Statistics
VariableNMeanStd DevSumMinimumMaximum
Power_kW15133.3333359.06010200060.00000250.00000
Daily_Users15313.33333104.311804700180.00000520.00000
Avg_Wait_Time1526.9333311.14493404.0000010.0000045.00000
Reliability_Score1585.800007.26243128775.0000097.00000
Pearson Correlation Coefficients, N = 15
Prob > |r| under H0: Rho=0
 Power_kWDaily_UsersAvg_Wait_TimeReliability_Score
Power_kW
1.00000
 
0.97431
<.0001
-0.91553
<.0001
0.90843
<.0001
Daily_Users
0.97431
<.0001
1.00000
 
-0.96504
<.0001
0.95797
<.0001
Avg_Wait_Time
-0.91553
<.0001
-0.96504
<.0001
1.00000
 
-0.98857
<.0001
Reliability_Score
0.90843
<.0001
0.95797
<.0001
-0.98857
<.0001
1.00000
 

Why this code is used

·       Relationship analysis

·       Dependency

·       Trend insight

What it does

·       Correlation matrix

·       Strength measurement

Why required

·       Optimization

·       Predictive analytics

·       Capacity planning

Interview angle

·       Pearson correlation

·       Multicollinearity

10. PROC SGPLOT

proc sgplot data=ev_util;

    vbar City / response=Daily_Users;

run;

OUTPUT:

The SGPlot Procedure

Why this code is used

·       Visualization

·       City performance

·       Trend spotting

What it does

·       Bar chart

·       User comparison

Why required

·       Management dashboard

·       Insights

·       Reporting

Interview angle

·       PROC SGPLOT

·       Visualization basics


11. FRAUD RISK MACRO

%macro fraud;

data ev_fraud;

    set ev_util;

    if Daily_Users > 500 and Avg_Wait_Time > 30 then Fraud_Flag="Yes";

    else Fraud_Flag="No";

run;

proc print data=ev_fraud;

 var Station_ID City Daily_Users Avg_Wait_Time Fraud_Flag;

run;

%mend;


%fraud;

OUTPUT:

ObsStation_IDCityDaily_UsersAvg_Wait_TimeFraud_Flag
1EV001Hyderabad34018No
2EV002Bengaluru38022No
3EV003Chennai22035No
4EV004Delhi41015No
5EV005Mumbai52010No
6EV006Pune20040No
7EV007Kochi31025No
8EV008Trivandrum18045No
9EV009Jaipur29030No
10EV010Chandigarh35020No
11EV011Ahmedabad48012No
12EV012Indore21038No
13EV013Nagpur30028No
14EV014Vizag19042No
15EV015Coimbatore32024No

Why this code is used

·       Fraud detection

·       Rule engine

·       Automation

What it does

·       Flags suspicious stations

·       Combines conditions

Why required

·       Revenue protection

·       Abuse prevention

·       Auditing

Interview angle

·       Rule-based modeling

       ·     Macro automation

12. PROC FREQ

proc freq data=ev_fraud;

    tables Utilization Fraud_Flag;

run;

OUTPUT:

The FREQ Procedure

UtilizationFrequencyPercentCumulative
Frequency
Cumulative
Percent
Optimal746.67746.67
Overloaded320.001066.67
Underused533.3315100.00
Fraud_FlagFrequencyPercentCumulative
Frequency
Cumulative
Percent
No15100.0015100.00

Why this code is used

·       Frequency analysis

·       Pattern detection

What it does

·       Counts categories

·       Distribution

Why required

·       Risk reporting

·       Utilization mix

Interview angle

·       Categorical analytics

13. PROC TRANSPOSE

proc sort data=ev_fraud;

    by Station_ID;

run;

proc print data=ev_fraud;

run;

OUTPUT:

ObsStation_IDCityCharging_TypeInstall_DatePower_kWAvg_Wait_TimeDaily_UsersReliability_ScoreReview_DateOperational_DaysNext_ServiceCity_StdCharger_TypeStation_KeyReliability_FilledEnergy_LoadDelay_RatioUtilizationFraud_Flag
1EV001HyderabadFast01JAN2023120183409231DEC202473001JUL2023HyderabadFASTEV001-Hyderabad92408000.15000OptimalNo
2EV002BengaluruFast15JAN2023150223808831DEC202471601JUL2023BengaluruFASTEV002-Bengaluru88570000.14667OptimalNo
3EV003ChennaiNormal10FEB202360352208031DEC202469001AUG2023ChennaiNORMALEV003-Chennai80132000.58333UnderusedNo
4EV004DelhiFast01MAR2023180154109531DEC202467101SEP2023DelhiFASTEV004-Delhi95738000.08333OverloadedNo
5EV005MumbaiUltra15MAR2023250105209731DEC202465701SEP2023MumbaiULTRAEV005-Mumbai971300000.04000OverloadedNo
6EV006PuneNormal10APR202380402007831DEC202463101OCT2023PuneNORMALEV006-Pune78160000.50000UnderusedNo
7EV007KochiFast01MAY2023140253108531DEC202461001NOV2023KochiFASTEV007-Kochi85434000.17857OptimalNo
8EV008TrivandrumNormal20MAY202370451807531DEC202459101NOV2023TrivandrumNORMALEV008-Trivandrum75126000.64286UnderusedNo
9EV009JaipurFast10JUN2023130302908231DEC202457001DEC2023JaipurFASTEV009-Jaipur82377000.23077OptimalNo
10EV010ChandigarhFast01JUL2023160203509031DEC202454901JAN2024ChandigarhFASTEV010-Chandigarh90560000.12500OptimalNo
11EV011AhmedabadUltra15JUL2023240124809631DEC202453501JAN2024AhmedabadULTRAEV011-Ahmedabad961152000.05000OverloadedNo
12EV012IndoreNormal01AUG202375382107931DEC202451801FEB2024IndoreNORMALEV012-Indore79157500.50667UnderusedNo
13EV013NagpurFast15AUG2023135283008431DEC202450401FEB2024NagpurFASTEV013-Nagpur84405000.20741OptimalNo
14EV014VizagNormal01SEP202365421907731DEC202448701MAR2024VizagNORMALEV014-Vizag77123500.64615UnderusedNo
15EV015CoimbatoreFast15SEP2023145243208931DEC202447301MAR2024CoimbatoreFASTEV015-Coimbatore89464000.16552OptimalNo


proc transpose data=ev_fraud out=ev_wide;

    by Utilization NotSorted;

    id Utilization;

    var Daily_Users;

run;

proc print data=ev_wide;

run;

OUTPUT:

ObsStation_ID_NAME_OptimalUnderusedOverloaded
1EV001Daily_Users340..
2EV002Daily_Users380..
3EV003Daily_Users.220.
4EV004Daily_Users..410
5EV005Daily_Users..520
6EV006Daily_Users.200.
7EV007Daily_Users310..
8EV008Daily_Users.180.
9EV009Daily_Users290..
10EV010Daily_Users350..
11EV011Daily_Users..480
12EV012Daily_Users.210.
13EV013Daily_Users300..
14EV014Daily_Users.190.
15EV015Daily_Users320..

Why this code is used

·       Restructuring

·       Reporting format

What it does

·       Converts long to wide

Why required

·       Dashboarding

·       Excel exports

Interview angle

·       Transpose logic


14. PROC APPEND

proc append base=ev_util 

            data=ev_fraud force;

run;

proc print data=ev_util;

run;

OUTPUT:

ObsStation_IDCityCharging_TypeInstall_DatePower_kWAvg_Wait_TimeDaily_UsersReliability_ScoreReview_DateOperational_DaysNext_ServiceCity_StdCharger_TypeStation_KeyReliability_FilledEnergy_LoadDelay_RatioUtilization
1EV001HyderabadFast01JAN2023120183409231DEC202473001JUL2023HyderabadFASTEV001-Hyderabad92408000.15000Optimal
2EV002BengaluruFast15JAN2023150223808831DEC202471601JUL2023BengaluruFASTEV002-Bengaluru88570000.14667Optimal
3EV003ChennaiNormal10FEB202360352208031DEC202469001AUG2023ChennaiNORMALEV003-Chennai80132000.58333Underused
4EV004DelhiFast01MAR2023180154109531DEC202467101SEP2023DelhiFASTEV004-Delhi95738000.08333Overloaded
5EV005MumbaiUltra15MAR2023250105209731DEC202465701SEP2023MumbaiULTRAEV005-Mumbai971300000.04000Overloaded
6EV006PuneNormal10APR202380402007831DEC202463101OCT2023PuneNORMALEV006-Pune78160000.50000Underused
7EV007KochiFast01MAY2023140253108531DEC202461001NOV2023KochiFASTEV007-Kochi85434000.17857Optimal
8EV008TrivandrumNormal20MAY202370451807531DEC202459101NOV2023TrivandrumNORMALEV008-Trivandrum75126000.64286Underused
9EV009JaipurFast10JUN2023130302908231DEC202457001DEC2023JaipurFASTEV009-Jaipur82377000.23077Optimal
10EV010ChandigarhFast01JUL2023160203509031DEC202454901JAN2024ChandigarhFASTEV010-Chandigarh90560000.12500Optimal
11EV011AhmedabadUltra15JUL2023240124809631DEC202453501JAN2024AhmedabadULTRAEV011-Ahmedabad961152000.05000Overloaded
12EV012IndoreNormal01AUG202375382107931DEC202451801FEB2024IndoreNORMALEV012-Indore79157500.50667Underused
13EV013NagpurFast15AUG2023135283008431DEC202450401FEB2024NagpurFASTEV013-Nagpur84405000.20741Optimal
14EV014VizagNormal01SEP202365421907731DEC202448701MAR2024VizagNORMALEV014-Vizag77123500.64615Underused
15EV015CoimbatoreFast15SEP2023145243208931DEC202447301MAR2024CoimbatoreFASTEV015-Coimbatore89464000.16552Optimal
16EV001HyderabadFast01JAN2023120183409231DEC202473001JUL2023HyderabadFASTEV001-Hyderabad92408000.15000Optimal
17EV002BengaluruFast15JAN2023150223808831DEC202471601JUL2023BengaluruFASTEV002-Bengaluru88570000.14667Optimal
18EV003ChennaiNormal10FEB202360352208031DEC202469001AUG2023ChennaiNORMALEV003-Chennai80132000.58333Underused
19EV004DelhiFast01MAR2023180154109531DEC202467101SEP2023DelhiFASTEV004-Delhi95738000.08333Overloaded
20EV005MumbaiUltra15MAR2023250105209731DEC202465701SEP2023MumbaiULTRAEV005-Mumbai971300000.04000Overloaded
21EV006PuneNormal10APR202380402007831DEC202463101OCT2023PuneNORMALEV006-Pune78160000.50000Underused
22EV007KochiFast01MAY2023140253108531DEC202461001NOV2023KochiFASTEV007-Kochi85434000.17857Optimal
23EV008TrivandrumNormal20MAY202370451807531DEC202459101NOV2023TrivandrumNORMALEV008-Trivandrum75126000.64286Underused
24EV009JaipurFast10JUN2023130302908231DEC202457001DEC2023JaipurFASTEV009-Jaipur82377000.23077Optimal
25EV010ChandigarhFast01JUL2023160203509031DEC202454901JAN2024ChandigarhFASTEV010-Chandigarh90560000.12500Optimal
26EV011AhmedabadUltra15JUL2023240124809631DEC202453501JAN2024AhmedabadULTRAEV011-Ahmedabad961152000.05000Overloaded
27EV012IndoreNormal01AUG202375382107931DEC202451801FEB2024IndoreNORMALEV012-Indore79157500.50667Underused
28EV013NagpurFast15AUG2023135283008431DEC202450401FEB2024NagpurFASTEV013-Nagpur84405000.20741Optimal
29EV014VizagNormal01SEP202365421907731DEC202448701MAR2024VizagNORMALEV014-Vizag77123500.64615Underused
30EV015CoimbatoreFast15SEP2023145243208931DEC202447301MAR2024CoimbatoreFASTEV015-Coimbatore89464000.16552Optimal

Why this code is used

·       Dataset stacking

·       History tracking

What it does

·       Adds fraud rows

Why required

·       Audit trail

·       Reporting

Interview angle

·       APPEND vs SET


15. PROC DATASETS DELETE

proc datasets library=work;

    delete ev_stations_raw;

run;

LOG:

NOTE: Deleting WORK.EV_STATIONS_RAW (memtype=DATA).

Why this code is used

·       Cleanup

·       Space management

What it does

·       Deletes raw table

Why required

·       Production hygiene

·       Performance

Interview angle

·       Library management




INTERVIEW QUESTIONS FOR YOU

1.What is a SAS library and why is it used?

2.What are temporary and permanent SAS datasets?

3.What is a SAS informat?


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 EV Charging Stations 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 : 


 


--->Follow our blog for more SAS-based analytics projects and industry data models.

To deepen your understanding of SAS analytics, please refer to our other data science and industry-focused projects listed below:





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