GLOBAL NATURAL DISASTER IMPACT DATA ANALYSIS USING SAS | PROC SQL | PROC MEANS | PROC UNIVARIATE | PROC SGPLOT | PROC TRANSPOSE | PROC APPEND | MACROS | DATE FUNCTIONS (INTCK-INTNX-MDY) | MERGE | SET
options nocenter;
1. DATASET CREATION
data disasters_raw;
format Disaster_Date Recovery_Date date9.;
input Disaster_ID Disaster_Type:$12. Country $ Casualties Cost_Million Severity
Disaster_Date : date9. Recovery_Date : date9.;
datalines;
1 Earthquake India 8500 4200 9 01JAN2023 01JAN2024
2 Flood India 1200 1100 6 10FEB2023 10AUG2023
3 Cyclone USA 950 2200 7 05MAR2023 05DEC2023
4 Wildfire Australia 600 1800 8 12APR2023 12JAN2024
5 Drought Kenya 2000 950 5 01MAY2023 01MAY2024
6 Tsunami Japan 12000 9000 10 15JUN2023 15JUN2024
7 Landslide Nepal 450 600 6 20JUL2023 20NOV2023
8 Flood China 5000 3500 8 02AUG2023 02FEB2024
9 Hurricane Mexico 1100 2400 7 15SEP2023 15MAR2024
10 Earthquake Turkey 10000 7500 9 10OCT2023 10OCT2024
11 Tornado USA 300 400 4 01NOV2023 01FEB2024
12 Wildfire Canada 800 1500 7 15NOV2023 15MAY2024
13 Flood Bangladesh 4000 2800 8 01DEC2023 01JUN2024
14 Volcano Indonesia 600 1200 6 15DEC2023 15JUL2024
15 Drought Ethiopia 2500 1300 5 01JAN2024 01JAN2025
;
run;
proc print data=disasters_raw;
run;
OUTPUT:
| Obs | Disaster_Date | Recovery_Date | Disaster_ID | Disaster_Type | Country | Casualties | Cost_Million | Severity |
|---|---|---|---|---|---|---|---|---|
| 1 | 01JAN2023 | 01JAN2024 | 1 | Earthquake | India | 8500 | 4200 | 9 |
| 2 | 10FEB2023 | 10AUG2023 | 2 | Flood | India | 1200 | 1100 | 6 |
| 3 | 05MAR2023 | 05DEC2023 | 3 | Cyclone | USA | 950 | 2200 | 7 |
| 4 | 12APR2023 | 12JAN2024 | 4 | Wildfire | Australi | 600 | 1800 | 8 |
| 5 | 01MAY2023 | 01MAY2024 | 5 | Drought | Kenya | 2000 | 950 | 5 |
| 6 | 15JUN2023 | 15JUN2024 | 6 | Tsunami | Japan | 12000 | 9000 | 10 |
| 7 | 20JUL2023 | 20NOV2023 | 7 | Landslide | Nepal | 450 | 600 | 6 |
| 8 | 02AUG2023 | 02FEB2024 | 8 | Flood | China | 5000 | 3500 | 8 |
| 9 | 15SEP2023 | 15MAR2024 | 9 | Hurricane | Mexico | 1100 | 2400 | 7 |
| 10 | 10OCT2023 | 10OCT2024 | 10 | Earthquake | Turkey | 10000 | 7500 | 9 |
| 11 | 01NOV2023 | 01FEB2024 | 11 | Tornado | USA | 300 | 400 | 4 |
| 12 | 15NOV2023 | 15MAY2024 | 12 | Wildfire | Canada | 800 | 1500 | 7 |
| 13 | 01DEC2023 | 01JUN2024 | 13 | Flood | Banglade | 4000 | 2800 | 8 |
| 14 | 15DEC2023 | 15JUL2024 | 14 | Volcano | Indonesi | 600 | 1200 | 6 |
| 15 | 01JAN2024 | 01JAN2025 | 15 | Drought | Ethiopia | 2500 | 1300 | 5 |
Why These Variables Matter:
|
Variable |
Why it
is needed |
|
Disaster_Type |
Groups
risk types (earthquake vs flood vs wildfire) |
|
Country |
Regional
impact analysis |
|
Casualties |
Human
loss measurement |
|
Cost_Million |
Economic
impact |
|
Severity |
Disaster
strength |
|
Recovery_Time |
Rehabilitation
burden |
|
Risk_Level |
Derived
macro-driven classification |
2. DATE HANDLING — INTCK, INTNX, MDY
data disasters_dates;
set disasters_raw;
Recovery_Time = intck('month', Disaster_Date, Recovery_Date);
Next_Review = intnx('month', Disaster_Date, 3);
format Next_Review date9.;
run;
proc print data=disasters_dates;
run;
OUTPUT:
| Obs | Disaster_Date | Recovery_Date | Disaster_ID | Disaster_Type | Country | Casualties | Cost_Million | Severity | Recovery_Time | Next_Review |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 01JAN2023 | 01JAN2024 | 1 | Earthquake | India | 8500 | 4200 | 9 | 12 | 01APR2023 |
| 2 | 10FEB2023 | 10AUG2023 | 2 | Flood | India | 1200 | 1100 | 6 | 6 | 01MAY2023 |
| 3 | 05MAR2023 | 05DEC2023 | 3 | Cyclone | USA | 950 | 2200 | 7 | 9 | 01JUN2023 |
| 4 | 12APR2023 | 12JAN2024 | 4 | Wildfire | Australi | 600 | 1800 | 8 | 9 | 01JUL2023 |
| 5 | 01MAY2023 | 01MAY2024 | 5 | Drought | Kenya | 2000 | 950 | 5 | 12 | 01AUG2023 |
| 6 | 15JUN2023 | 15JUN2024 | 6 | Tsunami | Japan | 12000 | 9000 | 10 | 12 | 01SEP2023 |
| 7 | 20JUL2023 | 20NOV2023 | 7 | Landslide | Nepal | 450 | 600 | 6 | 4 | 01OCT2023 |
| 8 | 02AUG2023 | 02FEB2024 | 8 | Flood | China | 5000 | 3500 | 8 | 6 | 01NOV2023 |
| 9 | 15SEP2023 | 15MAR2024 | 9 | Hurricane | Mexico | 1100 | 2400 | 7 | 6 | 01DEC2023 |
| 10 | 10OCT2023 | 10OCT2024 | 10 | Earthquake | Turkey | 10000 | 7500 | 9 | 12 | 01JAN2024 |
| 11 | 01NOV2023 | 01FEB2024 | 11 | Tornado | USA | 300 | 400 | 4 | 3 | 01FEB2024 |
| 12 | 15NOV2023 | 15MAY2024 | 12 | Wildfire | Canada | 800 | 1500 | 7 | 6 | 01FEB2024 |
| 13 | 01DEC2023 | 01JUN2024 | 13 | Flood | Banglade | 4000 | 2800 | 8 | 6 | 01MAR2024 |
| 14 | 15DEC2023 | 15JUL2024 | 14 | Volcano | Indonesi | 600 | 1200 | 6 | 7 | 01MAR2024 |
| 15 | 01JAN2024 | 01JAN2025 | 15 | Drought | Ethiopia | 2500 | 1300 | 5 | 12 | 01APR2024 |
Why INTCK,INTNX,MDY Used:
In disaster analytics, time is as
critical as cost.
·
INTCK → how long did rebuilding take
·
INTNX → future review scheduling
·
MDY → standardized disaster dating
This mimics how clinical trials use RFSTDTC, RFENDTC, AVAL dates.
3. MACRO – SEVERITY CLASSIFICATION
%macro classify_severity;
data disasters_classified;
length Risk_Level $9.;
set disasters_dates;
if Severity >= 9 then Risk_Level = "EXTREME";
else if Severity >= 7 then Risk_Level = "HIGH";
else if Severity >= 5 then Risk_Level = "MODERATE";
else Risk_Level = "LOW";
run;
proc print data=disasters_classified;
run;
%mend;
%classify_severity;
OUTPUT:
| Obs | Risk_Level | Disaster_Date | Recovery_Date | Disaster_ID | Disaster_Type | Country | Casualties | Cost_Million | Severity | Recovery_Time | Next_Review |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | EXTREME | 01JAN2023 | 01JAN2024 | 1 | Earthquake | India | 8500 | 4200 | 9 | 12 | 01APR2023 |
| 2 | MODERATE | 10FEB2023 | 10AUG2023 | 2 | Flood | India | 1200 | 1100 | 6 | 6 | 01MAY2023 |
| 3 | HIGH | 05MAR2023 | 05DEC2023 | 3 | Cyclone | USA | 950 | 2200 | 7 | 9 | 01JUN2023 |
| 4 | HIGH | 12APR2023 | 12JAN2024 | 4 | Wildfire | Australi | 600 | 1800 | 8 | 9 | 01JUL2023 |
| 5 | MODERATE | 01MAY2023 | 01MAY2024 | 5 | Drought | Kenya | 2000 | 950 | 5 | 12 | 01AUG2023 |
| 6 | EXTREME | 15JUN2023 | 15JUN2024 | 6 | Tsunami | Japan | 12000 | 9000 | 10 | 12 | 01SEP2023 |
| 7 | MODERATE | 20JUL2023 | 20NOV2023 | 7 | Landslide | Nepal | 450 | 600 | 6 | 4 | 01OCT2023 |
| 8 | HIGH | 02AUG2023 | 02FEB2024 | 8 | Flood | China | 5000 | 3500 | 8 | 6 | 01NOV2023 |
| 9 | HIGH | 15SEP2023 | 15MAR2024 | 9 | Hurricane | Mexico | 1100 | 2400 | 7 | 6 | 01DEC2023 |
| 10 | EXTREME | 10OCT2023 | 10OCT2024 | 10 | Earthquake | Turkey | 10000 | 7500 | 9 | 12 | 01JAN2024 |
| 11 | LOW | 01NOV2023 | 01FEB2024 | 11 | Tornado | USA | 300 | 400 | 4 | 3 | 01FEB2024 |
| 12 | HIGH | 15NOV2023 | 15MAY2024 | 12 | Wildfire | Canada | 800 | 1500 | 7 | 6 | 01FEB2024 |
| 13 | HIGH | 01DEC2023 | 01JUN2024 | 13 | Flood | Banglade | 4000 | 2800 | 8 | 6 | 01MAR2024 |
| 14 | MODERATE | 15DEC2023 | 15JUL2024 | 14 | Volcano | Indonesi | 600 | 1200 | 6 | 7 | 01MAR2024 |
| 15 | MODERATE | 01JAN2024 | 01JAN2025 | 15 | Drought | Ethiopia | 2500 | 1300 | 5 | 12 | 01APR2024 |
4. PROC SQL – ANALYTICAL SUMMARIES
proc sql;
create table country_cost as
select Country,
count(*) as Disaster_Count,
sum(Cost_Million) as Total_Cost,
sum(Casualties) as Total_Casualties
from disasters_classified
group by Country;
quit;
proc print data=country_cost;
run;
OUTPUT:
| Obs | Country | Disaster_Count | Total_Cost | Total_Casualties |
|---|---|---|---|---|
| 1 | Australi | 1 | 1800 | 600 |
| 2 | Banglade | 1 | 2800 | 4000 |
| 3 | Canada | 1 | 1500 | 800 |
| 4 | China | 1 | 3500 | 5000 |
| 5 | Ethiopia | 1 | 1300 | 2500 |
| 6 | India | 2 | 5300 | 9700 |
| 7 | Indonesi | 1 | 1200 | 600 |
| 8 | Japan | 1 | 9000 | 12000 |
| 9 | Kenya | 1 | 950 | 2000 |
| 10 | Mexico | 1 | 2400 | 1100 |
| 11 | Nepal | 1 | 600 | 450 |
| 12 | Turkey | 1 | 7500 | 10000 |
| 13 | USA | 2 | 2600 | 1250 |
Why Proc SQL Is Used:
SQL
allows relational analytics:
- Country level cost
- Risk-wise burden
- Disaster frequency
This is
exactly how safety summaries are done in ADaM.
5. PROC MEANS – STATISTICAL SUMMARY
proc means data=disasters_classified mean max min sum;
var Casualties Cost_Million Recovery_Time;
run;
OUTPUT:
The MEANS Procedure
| Variable | Mean | Maximum | Minimum | Sum |
|---|---|---|---|---|
Casualties Cost_Million Recovery_Time | 3333.33 2696.67 8.1333333 | 12000.00 9000.00 12.0000000 | 300.0000000 400.0000000 3.0000000 | 50000.00 40450.00 122.0000000 |
6. PROC UNIVARIATE – DISTRIBUTION ANALYSIS
proc univariate data=disasters_classified;
var Casualties Cost_Million;
histogram Casualties Cost_Million;
run;
OUTPUT:
The UNIVARIATE Procedure
Variable: Casualties
| Moments | |||
|---|---|---|---|
| N | 15 | Sum Weights | 15 |
| Mean | 3333.33333 | Sum Observations | 50000 |
| Std Deviation | 3836.27734 | Variance | 14717023.8 |
| Skewness | 1.37773304 | Kurtosis | 0.65781048 |
| Uncorrected SS | 372705000 | Corrected SS | 206038333 |
| Coeff Variation | 115.08832 | Std Error Mean | 990.522549 |
| Basic Statistical Measures | |||
|---|---|---|---|
| Location | Variability | ||
| Mean | 3333.333 | Std Deviation | 3836 |
| Median | 1200.000 | Variance | 14717024 |
| Mode | 600.000 | Range | 11700 |
| Interquartile Range | 4400 | ||
| Tests for Location: Mu0=0 | ||||
|---|---|---|---|---|
| Test | Statistic | p Value | ||
| Student's t | t | 3.365227 | Pr > |t| | 0.0046 |
| Sign | M | 7.5 | Pr >= |M| | <.0001 |
| Signed Rank | S | 60 | Pr >= |S| | <.0001 |
| Quantiles (Definition 5) | |
|---|---|
| Level | Quantile |
| 100% Max | 12000 |
| 99% | 12000 |
| 95% | 12000 |
| 90% | 10000 |
| 75% Q3 | 5000 |
| 50% Median | 1200 |
| 25% Q1 | 600 |
| 10% | 450 |
| 5% | 300 |
| 1% | 300 |
| 0% Min | 300 |
| Extreme Observations | |||
|---|---|---|---|
| Lowest | Highest | ||
| Value | Obs | Value | Obs |
| 300 | 11 | 4000 | 13 |
| 450 | 7 | 5000 | 8 |
| 600 | 14 | 8500 | 1 |
| 600 | 4 | 10000 | 10 |
| 800 | 12 | 12000 | 6 |
The UNIVARIATE Procedure
The UNIVARIATE Procedure
Variable: Cost_Million
| Moments | |||
|---|---|---|---|
| N | 15 | Sum Weights | 15 |
| Mean | 2696.66667 | Sum Observations | 40450 |
| Std Deviation | 2503.60217 | Variance | 6268023.81 |
| Skewness | 1.71106246 | Kurtosis | 2.35911263 |
| Uncorrected SS | 196832500 | Corrected SS | 87752333.3 |
| Coeff Variation | 92.8406242 | Std Error Mean | 646.4273 |
| Basic Statistical Measures | |||
|---|---|---|---|
| Location | Variability | ||
| Mean | 2696.667 | Std Deviation | 2504 |
| Median | 1800.000 | Variance | 6268024 |
| Mode | . | Range | 8600 |
| Interquartile Range | 2400 | ||
| Tests for Location: Mu0=0 | ||||
|---|---|---|---|---|
| Test | Statistic | p Value | ||
| Student's t | t | 4.171647 | Pr > |t| | 0.0009 |
| Sign | M | 7.5 | Pr >= |M| | <.0001 |
| Signed Rank | S | 60 | Pr >= |S| | <.0001 |
| Quantiles (Definition 5) | |
|---|---|
| Level | Quantile |
| 100% Max | 9000 |
| 99% | 9000 |
| 95% | 9000 |
| 90% | 7500 |
| 75% Q3 | 3500 |
| 50% Median | 1800 |
| 25% Q1 | 1100 |
| 10% | 600 |
| 5% | 400 |
| 1% | 400 |
| 0% Min | 400 |
| Extreme Observations | |||
|---|---|---|---|
| Lowest | Highest | ||
| Value | Obs | Value | Obs |
| 400 | 11 | 2800 | 13 |
| 600 | 7 | 3500 | 8 |
| 950 | 5 | 4200 | 1 |
| 1100 | 2 | 7500 | 10 |
| 1200 | 14 | 9000 | 6 |
The UNIVARIATE Procedure
Why Proc Means And Univariate:
These identify:
·
Outlier disasters
·
Worst cost events
·
Casualty distributions
In pharma, this equals lab and AE distribution checks
7. PROC SGPLOT – VISUAL ANALYTICS
proc sgplot data=disasters_classified;
vbar Disaster_Type / response=Casualties stat=sum;
run;
OUTPUT:
proc sgplot data=disasters_classified;
vbar Country / response=Cost_Million stat=sum;
run;
OUTPUT:
8. PROC TRANSPOSE
proc transpose data=disasters_classified out=disaster_transposed;
by Country NotSorted;
id Disaster_Type;
var Cost_Million;
run;
proc print data=disaster_transposed;
run;
OUTPUT:
| Obs | Country | _NAME_ | Earthquake | Flood | Cyclone | Wildfire | Drought | Tsunami | Landslide | Hurricane | Tornado | Volcano |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | India | Cost_Million | 4200 | 1100 | . | . | . | . | . | . | . | . |
| 2 | USA | Cost_Million | . | . | 2200 | . | . | . | . | . | . | . |
| 3 | Australi | Cost_Million | . | . | . | 1800 | . | . | . | . | . | . |
| 4 | Kenya | Cost_Million | . | . | . | . | 950 | . | . | . | . | . |
| 5 | Japan | Cost_Million | . | . | . | . | . | 9000 | . | . | . | . |
| 6 | Nepal | Cost_Million | . | . | . | . | . | . | 600 | . | . | . |
| 7 | China | Cost_Million | . | 3500 | . | . | . | . | . | . | . | . |
| 8 | Mexico | Cost_Million | . | . | . | . | . | . | . | 2400 | . | . |
| 9 | Turkey | Cost_Million | 7500 | . | . | . | . | . | . | . | . | . |
| 10 | USA | Cost_Million | . | . | . | . | . | . | . | . | 400 | . |
| 11 | Canada | Cost_Million | . | . | . | 1500 | . | . | . | . | . | . |
| 12 | Banglade | Cost_Million | . | 2800 | . | . | . | . | . | . | . | . |
| 13 | Indonesi | Cost_Million | . | . | . | . | . | . | . | . | . | 1200 |
| 14 | Ethiopia | Cost_Million | . | . | . | . | 1300 | . | . | . | . | . |
9. DATA MERGE
proc sort data=disasters_classified;
by Country;
run;
proc print data=disasters_classified;
run;
OUTPUT:
| Obs | Risk_Level | Disaster_Date | Recovery_Date | Disaster_ID | Disaster_Type | Country | Casualties | Cost_Million | Severity | Recovery_Time | Next_Review |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | HIGH | 12APR2023 | 12JAN2024 | 4 | Wildfire | Australi | 600 | 1800 | 8 | 9 | 01JUL2023 |
| 2 | HIGH | 01DEC2023 | 01JUN2024 | 13 | Flood | Banglade | 4000 | 2800 | 8 | 6 | 01MAR2024 |
| 3 | HIGH | 15NOV2023 | 15MAY2024 | 12 | Wildfire | Canada | 800 | 1500 | 7 | 6 | 01FEB2024 |
| 4 | HIGH | 02AUG2023 | 02FEB2024 | 8 | Flood | China | 5000 | 3500 | 8 | 6 | 01NOV2023 |
| 5 | MODERATE | 01JAN2024 | 01JAN2025 | 15 | Drought | Ethiopia | 2500 | 1300 | 5 | 12 | 01APR2024 |
| 6 | EXTREME | 01JAN2023 | 01JAN2024 | 1 | Earthquake | India | 8500 | 4200 | 9 | 12 | 01APR2023 |
| 7 | MODERATE | 10FEB2023 | 10AUG2023 | 2 | Flood | India | 1200 | 1100 | 6 | 6 | 01MAY2023 |
| 8 | MODERATE | 15DEC2023 | 15JUL2024 | 14 | Volcano | Indonesi | 600 | 1200 | 6 | 7 | 01MAR2024 |
| 9 | EXTREME | 15JUN2023 | 15JUN2024 | 6 | Tsunami | Japan | 12000 | 9000 | 10 | 12 | 01SEP2023 |
| 10 | MODERATE | 01MAY2023 | 01MAY2024 | 5 | Drought | Kenya | 2000 | 950 | 5 | 12 | 01AUG2023 |
| 11 | HIGH | 15SEP2023 | 15MAR2024 | 9 | Hurricane | Mexico | 1100 | 2400 | 7 | 6 | 01DEC2023 |
| 12 | MODERATE | 20JUL2023 | 20NOV2023 | 7 | Landslide | Nepal | 450 | 600 | 6 | 4 | 01OCT2023 |
| 13 | EXTREME | 10OCT2023 | 10OCT2024 | 10 | Earthquake | Turkey | 10000 | 7500 | 9 | 12 | 01JAN2024 |
| 14 | HIGH | 05MAR2023 | 05DEC2023 | 3 | Cyclone | USA | 950 | 2200 | 7 | 9 | 01JUN2023 |
| 15 | LOW | 01NOV2023 | 01FEB2024 | 11 | Tornado | USA | 300 | 400 | 4 | 3 | 01FEB2024 |
proc sort data=country_cost;
by Country;
run;
proc print data=country_cost;
run;
OUTPUT:
| Obs | Country | Disaster_Count | Total_Cost | Total_Casualties |
|---|---|---|---|---|
| 1 | Australi | 1 | 1800 | 600 |
| 2 | Banglade | 1 | 2800 | 4000 |
| 3 | Canada | 1 | 1500 | 800 |
| 4 | China | 1 | 3500 | 5000 |
| 5 | Ethiopia | 1 | 1300 | 2500 |
| 6 | India | 2 | 5300 | 9700 |
| 7 | Indonesi | 1 | 1200 | 600 |
| 8 | Japan | 1 | 9000 | 12000 |
| 9 | Kenya | 1 | 950 | 2000 |
| 10 | Mexico | 1 | 2400 | 1100 |
| 11 | Nepal | 1 | 600 | 450 |
| 12 | Turkey | 1 | 7500 | 10000 |
| 13 | USA | 2 | 2600 | 1250 |
data merged_data;
merge disasters_classified
country_cost;
by Country;
run;
proc print data=merged_data;
run;
OUTPUT:
| Obs | Risk_Level | Disaster_Date | Recovery_Date | Disaster_ID | Disaster_Type | Country | Casualties | Cost_Million | Severity | Recovery_Time | Next_Review | Disaster_Count | Total_Cost | Total_Casualties |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | HIGH | 12APR2023 | 12JAN2024 | 4 | Wildfire | Australi | 600 | 1800 | 8 | 9 | 01JUL2023 | 1 | 1800 | 600 |
| 2 | HIGH | 01DEC2023 | 01JUN2024 | 13 | Flood | Banglade | 4000 | 2800 | 8 | 6 | 01MAR2024 | 1 | 2800 | 4000 |
| 3 | HIGH | 15NOV2023 | 15MAY2024 | 12 | Wildfire | Canada | 800 | 1500 | 7 | 6 | 01FEB2024 | 1 | 1500 | 800 |
| 4 | HIGH | 02AUG2023 | 02FEB2024 | 8 | Flood | China | 5000 | 3500 | 8 | 6 | 01NOV2023 | 1 | 3500 | 5000 |
| 5 | MODERATE | 01JAN2024 | 01JAN2025 | 15 | Drought | Ethiopia | 2500 | 1300 | 5 | 12 | 01APR2024 | 1 | 1300 | 2500 |
| 6 | EXTREME | 01JAN2023 | 01JAN2024 | 1 | Earthquake | India | 8500 | 4200 | 9 | 12 | 01APR2023 | 2 | 5300 | 9700 |
| 7 | MODERATE | 10FEB2023 | 10AUG2023 | 2 | Flood | India | 1200 | 1100 | 6 | 6 | 01MAY2023 | 2 | 5300 | 9700 |
| 8 | MODERATE | 15DEC2023 | 15JUL2024 | 14 | Volcano | Indonesi | 600 | 1200 | 6 | 7 | 01MAR2024 | 1 | 1200 | 600 |
| 9 | EXTREME | 15JUN2023 | 15JUN2024 | 6 | Tsunami | Japan | 12000 | 9000 | 10 | 12 | 01SEP2023 | 1 | 9000 | 12000 |
| 10 | MODERATE | 01MAY2023 | 01MAY2024 | 5 | Drought | Kenya | 2000 | 950 | 5 | 12 | 01AUG2023 | 1 | 950 | 2000 |
| 11 | HIGH | 15SEP2023 | 15MAR2024 | 9 | Hurricane | Mexico | 1100 | 2400 | 7 | 6 | 01DEC2023 | 1 | 2400 | 1100 |
| 12 | MODERATE | 20JUL2023 | 20NOV2023 | 7 | Landslide | Nepal | 450 | 600 | 6 | 4 | 01OCT2023 | 1 | 600 | 450 |
| 13 | EXTREME | 10OCT2023 | 10OCT2024 | 10 | Earthquake | Turkey | 10000 | 7500 | 9 | 12 | 01JAN2024 | 1 | 7500 | 10000 |
| 14 | HIGH | 05MAR2023 | 05DEC2023 | 3 | Cyclone | USA | 950 | 2200 | 7 | 9 | 01JUN2023 | 2 | 2600 | 1250 |
| 15 | LOW | 01NOV2023 | 01FEB2024 | 11 | Tornado | USA | 300 | 400 | 4 | 3 | 01FEB2024 | 2 | 2600 | 1250 |
10. PROC APPEND
data new_disasters;
input Disaster_ID Disaster_Type:$12. Country $ Casualties Cost_Million Severity
Disaster_Date : date9. Recovery_Date : date9.;
datalines;
16 Flood SriLanka 900 750 6 10JAN2024 10JUL2024
17 Earthquake Peru 4500 3200 8 01FEB2024 01FEB2025
;
run;
proc print data=new_disasters;
run;
OUTPUT:
| Obs | Disaster_ID | Disaster_Type | Country | Casualties | Cost_Million | Severity | Disaster_Date | Recovery_Date |
|---|---|---|---|---|---|---|---|---|
| 1 | 16 | Flood | SriLanka | 900 | 750 | 6 | 23385 | 23567 |
| 2 | 17 | Earthquake | Peru | 4500 | 3200 | 8 | 23407 | 23773 |
proc append base=disasters_raw
data=new_disasters force;
run;
proc print data=disasters_raw;
run;
OUTPUT:
| Obs | Disaster_Date | Recovery_Date | Disaster_ID | Disaster_Type | Country | Casualties | Cost_Million | Severity |
|---|---|---|---|---|---|---|---|---|
| 1 | 01JAN2023 | 01JAN2024 | 1 | Earthquake | India | 8500 | 4200 | 9 |
| 2 | 10FEB2023 | 10AUG2023 | 2 | Flood | India | 1200 | 1100 | 6 |
| 3 | 05MAR2023 | 05DEC2023 | 3 | Cyclone | USA | 950 | 2200 | 7 |
| 4 | 12APR2023 | 12JAN2024 | 4 | Wildfire | Australi | 600 | 1800 | 8 |
| 5 | 01MAY2023 | 01MAY2024 | 5 | Drought | Kenya | 2000 | 950 | 5 |
| 6 | 15JUN2023 | 15JUN2024 | 6 | Tsunami | Japan | 12000 | 9000 | 10 |
| 7 | 20JUL2023 | 20NOV2023 | 7 | Landslide | Nepal | 450 | 600 | 6 |
| 8 | 02AUG2023 | 02FEB2024 | 8 | Flood | China | 5000 | 3500 | 8 |
| 9 | 15SEP2023 | 15MAR2024 | 9 | Hurricane | Mexico | 1100 | 2400 | 7 |
| 10 | 10OCT2023 | 10OCT2024 | 10 | Earthquake | Turkey | 10000 | 7500 | 9 |
| 11 | 01NOV2023 | 01FEB2024 | 11 | Tornado | USA | 300 | 400 | 4 |
| 12 | 15NOV2023 | 15MAY2024 | 12 | Wildfire | Canada | 800 | 1500 | 7 |
| 13 | 01DEC2023 | 01JUN2024 | 13 | Flood | Banglade | 4000 | 2800 | 8 |
| 14 | 15DEC2023 | 15JUL2024 | 14 | Volcano | Indonesi | 600 | 1200 | 6 |
| 15 | 01JAN2024 | 01JAN2025 | 15 | Drought | Ethiopia | 2500 | 1300 | 5 |
| 16 | 10JAN2024 | 10JUL2024 | 16 | Flood | SriLanka | 900 | 750 | 6 |
| 17 | 01FEB2024 | 01FEB2025 | 17 | Earthquake | Peru | 4500 | 3200 | 8 |
11. SET Statement
data full_disasters;
set disasters_classified
new_disasters;
run;
proc print data=full_disasters;
run;
OUTPUT:
| Obs | Risk_Level | Disaster_Date | Recovery_Date | Disaster_ID | Disaster_Type | Country | Casualties | Cost_Million | Severity | Recovery_Time | Next_Review |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | HIGH | 12APR2023 | 12JAN2024 | 4 | Wildfire | Australi | 600 | 1800 | 8 | 9 | 01JUL2023 |
| 2 | HIGH | 01DEC2023 | 01JUN2024 | 13 | Flood | Banglade | 4000 | 2800 | 8 | 6 | 01MAR2024 |
| 3 | HIGH | 15NOV2023 | 15MAY2024 | 12 | Wildfire | Canada | 800 | 1500 | 7 | 6 | 01FEB2024 |
| 4 | HIGH | 02AUG2023 | 02FEB2024 | 8 | Flood | China | 5000 | 3500 | 8 | 6 | 01NOV2023 |
| 5 | MODERATE | 01JAN2024 | 01JAN2025 | 15 | Drought | Ethiopia | 2500 | 1300 | 5 | 12 | 01APR2024 |
| 6 | EXTREME | 01JAN2023 | 01JAN2024 | 1 | Earthquake | India | 8500 | 4200 | 9 | 12 | 01APR2023 |
| 7 | MODERATE | 10FEB2023 | 10AUG2023 | 2 | Flood | India | 1200 | 1100 | 6 | 6 | 01MAY2023 |
| 8 | MODERATE | 15DEC2023 | 15JUL2024 | 14 | Volcano | Indonesi | 600 | 1200 | 6 | 7 | 01MAR2024 |
| 9 | EXTREME | 15JUN2023 | 15JUN2024 | 6 | Tsunami | Japan | 12000 | 9000 | 10 | 12 | 01SEP2023 |
| 10 | MODERATE | 01MAY2023 | 01MAY2024 | 5 | Drought | Kenya | 2000 | 950 | 5 | 12 | 01AUG2023 |
| 11 | HIGH | 15SEP2023 | 15MAR2024 | 9 | Hurricane | Mexico | 1100 | 2400 | 7 | 6 | 01DEC2023 |
| 12 | MODERATE | 20JUL2023 | 20NOV2023 | 7 | Landslide | Nepal | 450 | 600 | 6 | 4 | 01OCT2023 |
| 13 | EXTREME | 10OCT2023 | 10OCT2024 | 10 | Earthquake | Turkey | 10000 | 7500 | 9 | 12 | 01JAN2024 |
| 14 | HIGH | 05MAR2023 | 05DEC2023 | 3 | Cyclone | USA | 950 | 2200 | 7 | 9 | 01JUN2023 |
| 15 | LOW | 01NOV2023 | 01FEB2024 | 11 | Tornado | USA | 300 | 400 | 4 | 3 | 01FEB2024 |
| 16 | 10JAN2024 | 10JUL2024 | 16 | Flood | SriLanka | 900 | 750 | 6 | . | . | |
| 17 | 01FEB2024 | 01FEB2025 | 17 | Earthquake | Peru | 4500 | 3200 | 8 | . | . |
Why TRANSPOSE, MERGE, APPEND, SET:
These replicate:
·
SDTM → ADaM reshaping
·
Incremental updates
·
Database refresh cycles
Just like you do in ADSL, ADAE, ADLB.
12. ADVANCED SQL — RISK-WISE COST
proc sql;
select Risk_Level,
sum(Cost_Million) as Total_Cost,
avg(Casualties) as Avg_Casualties
from disasters_classified
group by Risk_Level;
quit;
OUTPUT:
| Risk_Level | Total_Cost | Avg_Casualties |
|---|---|---|
| EXTREME | 20700 | 10166.67 |
| HIGH | 14200 | 2075 |
| LOW | 400 | 300 |
| MODERATE | 5150 | 1350 |
13. TIME-BASED ANALYSIS
proc sql;
select Disaster_Type,
avg(Recovery_Time) as Avg_Recovery_Months
from disasters_classified
group by Disaster_Type;
quit;
| Disaster_Type | Avg_Recovery_Months |
|---|---|
| Cyclone | 9 |
| Drought | 12 |
| Earthquake | 12 |
| Flood | 6 |
| Hurricane | 6 |
| Landslide | 4 |
| Tornado | 3 |
| Tsunami | 12 |
| Volcano | 7 |
| Wildfire | 7.5 |
No comments:
Post a Comment