INDIAN FREEDOM FIGHTERS DATA CREATION, VALIDATION, DISTANCE ANALYSIS, AND GEOGRAPHIC MAPPING USING PROC CONTENTS, PROC FREQ, PROC MEANS, PROC SQL, AND PROC SGPLOT
1. create dataset
options nocenter;
data work.freedom_raw;
infile datalines truncover;
length FIGHTER_ID $4 NAME $50 STATE $30 remaining $200;
input FIGHTER_ID $ @;
input remaining $char200.;
/* Define state list manually */
array statelist[10] $30 _temporary_;
statelist[1] = 'Gujarat';
statelist[2] = 'Punjab';
statelist[3] = 'WestBengal';
statelist[4] = 'UttarPradesh';
statelist[5] = 'Maharashtra';
statelist[6] = 'Jhansi';
statelist[7] = 'Madras';
statelist[8] = 'TamilNadu';
statelist[9] = 'Kolkata';
statelist[10] = 'Peshawar';
/* Find and split by state */
do i = 1 to dim(statelist);
pos = find(remaining, statelist[i], 'it');
if pos > 0 then do;
STATE = statelist[i];
NAME = strip(substr(remaining, 1, pos - 1));
/* Extract remaining numbers after the state */
numpart = substr(remaining, pos + length(STATE));
/* Scan the numbers from the tail part */
BIRTH_YEAR = input(scan(numpart, 1, ' '), 8.);
LATITUDE = input(scan(numpart, 2, ' '), best.);
LONGITUDE = input(scan(numpart, 3, ' '), best.);
leave;
end;
end;
drop remaining pos i numpart;
datalines;
F001 Mahatma Gandhi Gujarat 1869 21.8090 72.1360
F002 Bhagat Singh Punjab 1907 31.1471 75.3412
F003 Subhas Chandra Bose WestBengal 1897 22.5726 88.3639
F004 Jawaharlal Nehru UttarPradesh 1889 26.8467 80.9462
F005 Sardar Vallabhbhai Patel Gujarat 1875 23.0225 72.5714
F006 Rani Lakshmibai Jhansi 1828 25.4460 78.5689
F007 Bal Gangadhar Tilak Maharashtra 1856 18.5204 73.8567
F008 Lala Lajpat Rai Punjab 1865 28.7041 77.1025
F009 Annie Besant Madras 1847 13.0827 80.2707
F010 Subramania Bharati TamilNadu 1882 10.7905 79.1370
F011 Chittaranjan Das Kolkata 1870 22.5726 88.3639
F012 Khan Abdul Ghaffar Khan Peshawar 1890 34.0151 71.5249
;
run;
proc print data=freedom_raw noobs;
title "Cleaned Indian Freedom Fighters Dataset";
run;
OUTPUT:
| FIGHTER_ID | NAME | STATE | BIRTH_YEAR | LATITUDE | LONGITUDE |
|---|---|---|---|---|---|
| F001 | Mahatma Gandhi | Gujarat | 1869 | 21.8090 | 72.1360 |
| F002 | Bhagat Singh | Punjab | 1907 | 31.1471 | 75.3412 |
| F003 | Subhas Chandra Bose | WestBengal | 1897 | 22.5726 | 88.3639 |
| F004 | Jawaharlal Nehru | UttarPradesh | 1889 | 26.8467 | 80.9462 |
| F005 | Sardar Vallabhbhai Patel | Gujarat | 1875 | 23.0225 | 72.5714 |
| F006 | Rani Lakshmibai | Jhansi | 1828 | 25.4460 | 78.5689 |
| F007 | Bal Gangadhar Tilak | Maharashtra | 1856 | 18.5204 | 73.8567 |
| F008 | Lala Lajpat Rai | Punjab | 1865 | 28.7041 | 77.1025 |
| F009 | Annie Besant | Madras | 1847 | 13.0827 | 80.2707 |
| F010 | Subramania Bharati | TamilNadu | 1882 | 10.7905 | 79.1370 |
| F011 | Chittaranjan Das | Kolkata | 1870 | 22.5726 | 88.3639 |
| F012 | Khan Abdul Ghaffar Khan | Peshawar | 1890 | 34.0151 | 71.5249 |
2. Data cleaning & validation steps
2.1 Inspect structure and quick frequency checks
proc contents data=work.freedom_raw varnum;
run;
OUTPUT:
The CONTENTS Procedure
| Data Set Name | WORK.FREEDOM_RAW | Observations | 12 |
|---|---|---|---|
| Member Type | DATA | Variables | 6 |
| Engine | V9 | Indexes | 0 |
| Created | 11/10/2025 09:08:04 | Observation Length | 112 |
| Last Modified | 11/10/2025 09:08:04 | 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 | 1168 |
| Obs in First Data Page | 12 |
| Number of Data Set Repairs | 0 |
| Filename | /saswork/SAS_workB17C00018A19_odaws01-apse1-2.oda.sas.com/SAS_workC0CD00018A19_odaws01-apse1-2.oda.sas.com/freedom_raw.sas7bdat |
| Release Created | 9.0401M8 |
| Host Created | Linux |
| Inode Number | 67110951 |
| Access Permission | rw-r--r-- |
| Owner Name | u63247146 |
| File Size | 256KB |
| File Size (bytes) | 262144 |
| Variables in Creation Order | |||
|---|---|---|---|
| # | Variable | Type | Len |
| 1 | FIGHTER_ID | Char | 4 |
| 2 | NAME | Char | 50 |
| 3 | STATE | Char | 30 |
| 4 | BIRTH_YEAR | Num | 8 |
| 5 | LATITUDE | Num | 8 |
| 6 | LONGITUDE | Num | 8 |
proc freq data=work.freedom_raw;
tables STATE / nocum;
run;
OUTPUT:
The FREQ Procedure
| STATE | Frequency | Percent |
|---|---|---|
| Gujarat | 2 | 16.67 |
| Jhansi | 1 | 8.33 |
| Kolkata | 1 | 8.33 |
| Madras | 1 | 8.33 |
| Maharashtra | 1 | 8.33 |
| Peshawar | 1 | 8.33 |
| Punjab | 2 | 16.67 |
| TamilNadu | 1 | 8.33 |
| UttarPradesh | 1 | 8.33 |
| WestBengal | 1 | 8.33 |
proc print data=work.freedom_raw(obs=12);
run;
OUTPUT:
| Obs | FIGHTER_ID | NAME | STATE | BIRTH_YEAR | LATITUDE | LONGITUDE |
|---|---|---|---|---|---|---|
| 1 | F001 | Mahatma Gandhi | Gujarat | 1869 | 21.8090 | 72.1360 |
| 2 | F002 | Bhagat Singh | Punjab | 1907 | 31.1471 | 75.3412 |
| 3 | F003 | Subhas Chandra Bose | WestBengal | 1897 | 22.5726 | 88.3639 |
| 4 | F004 | Jawaharlal Nehru | UttarPradesh | 1889 | 26.8467 | 80.9462 |
| 5 | F005 | Sardar Vallabhbhai Patel | Gujarat | 1875 | 23.0225 | 72.5714 |
| 6 | F006 | Rani Lakshmibai | Jhansi | 1828 | 25.4460 | 78.5689 |
| 7 | F007 | Bal Gangadhar Tilak | Maharashtra | 1856 | 18.5204 | 73.8567 |
| 8 | F008 | Lala Lajpat Rai | Punjab | 1865 | 28.7041 | 77.1025 |
| 9 | F009 | Annie Besant | Madras | 1847 | 13.0827 | 80.2707 |
| 10 | F010 | Subramania Bharati | TamilNadu | 1882 | 10.7905 | 79.1370 |
| 11 | F011 | Chittaranjan Das | Kolkata | 1870 | 22.5726 | 88.3639 |
| 12 | F012 | Khan Abdul Ghaffar Khan | Peshawar | 1890 | 34.0151 | 71.5249 |
2.2 Coordinate sanity checks
data work.freedom_clean1;
set work.freedom_raw;
length coord_flag $50;
coord_flag='OK';
if LATITUDE=. or LONGITUDE=. then coord_flag='MISSING_COORD';
else if LATITUDE < -90 or LATITUDE > 90 then coord_flag='BAD_LAT';
else if LATITUDE < -180 or LONGITUDE > 180 then coord_flag='BAD_LON';
/* Trim and normalize text fields */
NAME = strip(NAME);
STATE = propcase(strip(translate(STATE,' ','_'))); /* ensure consistent case; underscores preserved */
run;
proc print data=work.freedom_clean1;
run;
OUTPUT:
| Obs | FIGHTER_ID | NAME | STATE | BIRTH_YEAR | LATITUDE | LONGITUDE | coord_flag |
|---|---|---|---|---|---|---|---|
| 1 | F001 | Mahatma Gandhi | Gujarat | 1869 | 21.8090 | 72.1360 | OK |
| 2 | F002 | Bhagat Singh | Punjab | 1907 | 31.1471 | 75.3412 | OK |
| 3 | F003 | Subhas Chandra Bose | Westbengal | 1897 | 22.5726 | 88.3639 | OK |
| 4 | F004 | Jawaharlal Nehru | Uttarpradesh | 1889 | 26.8467 | 80.9462 | OK |
| 5 | F005 | Sardar Vallabhbhai Patel | Gujarat | 1875 | 23.0225 | 72.5714 | OK |
| 6 | F006 | Rani Lakshmibai | Jhansi | 1828 | 25.4460 | 78.5689 | OK |
| 7 | F007 | Bal Gangadhar Tilak | Maharashtra | 1856 | 18.5204 | 73.8567 | OK |
| 8 | F008 | Lala Lajpat Rai | Punjab | 1865 | 28.7041 | 77.1025 | OK |
| 9 | F009 | Annie Besant | Madras | 1847 | 13.0827 | 80.2707 | OK |
| 10 | F010 | Subramania Bharati | Tamilnadu | 1882 | 10.7905 | 79.1370 | OK |
| 11 | F011 | Chittaranjan Das | Kolkata | 1870 | 22.5726 | 88.3639 | OK |
| 12 | F012 | Khan Abdul Ghaffar Khan | Peshawar | 1890 | 34.0151 | 71.5249 | OK |
2.3 Validate unique FIGHTER_ID and duplicates
proc sort data=work.freedom_clean1 nodupkey dupout=work.dup_ids
out=work.freedom_sorted;
by FIGHTER_ID;
run;
proc print data=work.dup_ids;
title 'Duplicate IDs (should be empty)';
run;
title;
LOG:
2.4 Birth year plausibility checks
data work.freedom_validated;
set work.freedom_sorted;
length birth_flag $30;
if BIRTH_YEAR = . then birth_flag='MISSING_BIRTH_YEAR';
else if BIRTH_YEAR < 1700 or BIRTH_YEAR > 2005 then birth_flag='BIRTH_YEAR_OUT_OF_RANGE';
else birth_flag='OK';
run;
proc print data=work.freedom_validated;
run;
OUTPUT:
| Obs | FIGHTER_ID | NAME | STATE | BIRTH_YEAR | LATITUDE | LONGITUDE | coord_flag | birth_flag |
|---|---|---|---|---|---|---|---|---|
| 1 | F001 | Mahatma Gandhi | Gujarat | 1869 | 21.8090 | 72.1360 | OK | OK |
| 2 | F002 | Bhagat Singh | Punjab | 1907 | 31.1471 | 75.3412 | OK | OK |
| 3 | F003 | Subhas Chandra Bose | Westbengal | 1897 | 22.5726 | 88.3639 | OK | OK |
| 4 | F004 | Jawaharlal Nehru | Uttarpradesh | 1889 | 26.8467 | 80.9462 | OK | OK |
| 5 | F005 | Sardar Vallabhbhai Patel | Gujarat | 1875 | 23.0225 | 72.5714 | OK | OK |
| 6 | F006 | Rani Lakshmibai | Jhansi | 1828 | 25.4460 | 78.5689 | OK | OK |
| 7 | F007 | Bal Gangadhar Tilak | Maharashtra | 1856 | 18.5204 | 73.8567 | OK | OK |
| 8 | F008 | Lala Lajpat Rai | Punjab | 1865 | 28.7041 | 77.1025 | OK | OK |
| 9 | F009 | Annie Besant | Madras | 1847 | 13.0827 | 80.2707 | OK | OK |
| 10 | F010 | Subramania Bharati | Tamilnadu | 1882 | 10.7905 | 79.1370 | OK | OK |
| 11 | F011 | Chittaranjan Das | Kolkata | 1870 | 22.5726 | 88.3639 | OK | OK |
| 12 | F012 | Khan Abdul Ghaffar Khan | Peshawar | 1890 | 34.0151 | 71.5249 | OK | OK |
proc freq data=work.freedom_validated;
tables birth_flag coord_flag / nocum;
run;
OUTPUT:
The FREQ Procedure
| birth_flag | Frequency | Percent |
|---|---|---|
| OK | 12 | 100.00 |
| coord_flag | Frequency | Percent |
|---|---|---|
| OK | 12 | 100.00 |
2.5 Create a final clean dataset (dropping or flagging bad rows)
data work.freedom_final work.freedom_qc;
set work.freedom_validated;
if coord_flag='OK' and birth_flag='OK' then output work.freedom_final;
else output work.freedom_qc;
run;
proc print data=work.freedom_qc;
title 'QC issues';
run;
LOG:
NOTE: The data set WORK.FREEDOM_QC has 0 observations and 8 variables.
proc print data=work.freedom_final;
title 'Clean records';
run;
OUTPUT:
| Obs | FIGHTER_ID | NAME | STATE | BIRTH_YEAR | LATITUDE | LONGITUDE | coord_flag | birth_flag |
|---|---|---|---|---|---|---|---|---|
| 1 | F001 | Mahatma Gandhi | Gujarat | 1869 | 21.8090 | 72.1360 | OK | OK |
| 2 | F002 | Bhagat Singh | Punjab | 1907 | 31.1471 | 75.3412 | OK | OK |
| 3 | F003 | Subhas Chandra Bose | Westbengal | 1897 | 22.5726 | 88.3639 | OK | OK |
| 4 | F004 | Jawaharlal Nehru | Uttarpradesh | 1889 | 26.8467 | 80.9462 | OK | OK |
| 5 | F005 | Sardar Vallabhbhai Patel | Gujarat | 1875 | 23.0225 | 72.5714 | OK | OK |
| 6 | F006 | Rani Lakshmibai | Jhansi | 1828 | 25.4460 | 78.5689 | OK | OK |
| 7 | F007 | Bal Gangadhar Tilak | Maharashtra | 1856 | 18.5204 | 73.8567 | OK | OK |
| 8 | F008 | Lala Lajpat Rai | Punjab | 1865 | 28.7041 | 77.1025 | OK | OK |
| 9 | F009 | Annie Besant | Madras | 1847 | 13.0827 | 80.2707 | OK | OK |
| 10 | F010 | Subramania Bharati | Tamilnadu | 1882 | 10.7905 | 79.1370 | OK | OK |
| 11 | F011 | Chittaranjan Das | Kolkata | 1870 | 22.5726 | 88.3639 | OK | OK |
| 12 | F012 | Khan Abdul Ghaffar Khan | Peshawar | 1890 | 34.0151 | 71.5249 | OK | OK |
3. Distance calculation and PROC MEANS for distance stats
3.1 Haversine function in DATA step
%let lat_ref=28.6139;
%let lon_ref=77.2090;
data work.freedom_dist;
set work.freedom_final;
/* convert degrees to radians */
pi = constant('pi');
deg2rad = pi/180;
lat1 = &lat_ref. * deg2rad;
lon1 = &lon_ref. * deg2rad;
lat2 = LATITUDE * deg2rad;
lon2 = LONGITUDE * deg2rad;
dlat = lat2 - lat1;
dlon = lon2 - lon1;
a = sin(dlat/2)**2 + cos(lat1)*cos(lat2)*sin(dlon/2)**2;
c = 2 * atan2(sqrt(a), sqrt(1-a));
earth_km = 6371; /* average Earth radius in km */
distance_km = round(earth_km * c, 0.1);
drop pi deg2rad lat1 lon1 lat2 lon2 dlat dlon a c earth_km;
run;
proc print data=work.freedom_dist;
var FIGHTER_ID NAME STATE BIRTH_YEAR LATITUDE LONGITUDE distance_km;
run;
OUTPUT:
| Obs | FIGHTER_ID | NAME | STATE | BIRTH_YEAR | LATITUDE | LONGITUDE | distance_km |
|---|---|---|---|---|---|---|---|
| 1 | F001 | Mahatma Gandhi | Gujarat | 1869 | 21.8090 | 72.1360 | 912.4 |
| 2 | F002 | Bhagat Singh | Punjab | 1907 | 31.1471 | 75.3412 | 334.3 |
| 3 | F003 | Subhas Chandra Bose | Westbengal | 1897 | 22.5726 | 88.3639 | 1303.8 |
| 4 | F004 | Jawaharlal Nehru | Uttarpradesh | 1889 | 26.8467 | 80.9462 | 417.0 |
| 5 | F005 | Sardar Vallabhbhai Patel | Gujarat | 1875 | 23.0225 | 72.5714 | 775.7 |
| 6 | F006 | Rani Lakshmibai | Jhansi | 1828 | 25.4460 | 78.5689 | 377.1 |
| 7 | F007 | Bal Gangadhar Tilak | Maharashtra | 1856 | 18.5204 | 73.8567 | 1173.0 |
| 8 | F008 | Lala Lajpat Rai | Punjab | 1865 | 28.7041 | 77.1025 | 14.4 |
| 9 | F009 | Annie Besant | Madras | 1847 | 13.0827 | 80.2707 | 1755.8 |
| 10 | F010 | Subramania Bharati | Tamilnadu | 1882 | 10.7905 | 79.1370 | 1992.0 |
| 11 | F011 | Chittaranjan Das | Kolkata | 1870 | 22.5726 | 88.3639 | 1303.8 |
| 12 | F012 | Khan Abdul Ghaffar Khan | Peshawar | 1890 | 34.0151 | 71.5249 | 807.3 |
3.2 Use PROC MEANS for distance-based statistics
proc means data=work.freedom_dist n mean median min max stddev maxdec=2;
var distance_km;
run;
OUTPUT:
The MEANS Procedure
| Analysis Variable : distance_km | |||||
|---|---|---|---|---|---|
| N | Mean | Median | Minimum | Maximum | Std Dev |
| 12 | 930.55 | 859.85 | 14.40 | 1992.00 | 599.20 |
3.3 Use PROC SQL for grouped aggregates by region/state
proc sql;
create table work.state_distance_summary as
select STATE,
count(*) as N,
mean(distance_km) as MEAN_DIST format=8.2,
median(distance_km) as MEDIAN_DIST format=8.2,
min(distance_km) as MIN_DIST format=8.2,
max(distance_km) as MAX_DIST format=8.2
from work.freedom_dist
group by STATE;
quit;
proc print data=work.state_distance_summary;
run;
OUTPUT:
| Obs | STATE | N | MEAN_DIST | MEDIAN_DIST | MIN_DIST | MAX_DIST |
|---|---|---|---|---|---|---|
| 1 | Gujarat | 2 | 844.05 | 844.05 | 775.70 | 912.40 |
| 2 | Jhansi | 1 | 377.10 | 377.10 | 377.10 | 377.10 |
| 3 | Kolkata | 1 | 1303.80 | 1303.80 | 1303.80 | 1303.80 |
| 4 | Madras | 1 | 1755.80 | 1755.80 | 1755.80 | 1755.80 |
| 5 | Maharashtra | 1 | 1173.00 | 1173.00 | 1173.00 | 1173.00 |
| 6 | Peshawar | 1 | 807.30 | 807.30 | 807.30 | 807.30 |
| 7 | Punjab | 2 | 174.35 | 174.35 | 14.40 | 334.30 |
| 8 | Tamilnadu | 1 | 1992.00 | 1992.00 | 1992.00 | 1992.00 |
| 9 | Uttarpradesh | 1 | 417.00 | 417.00 | 417.00 | 417.00 |
| 10 | Westbengal | 1 | 1303.80 | 1303.80 | 1303.80 | 1303.80 |
4. Mapping with PROC SGPLOT scatter PLOT
data plot_points;
set work.freedom_raw;
run;
proc print data=work.plot_points;
run;
OUTPUT:
| Obs | FIGHTER_ID | NAME | STATE | BIRTH_YEAR | LATITUDE | LONGITUDE |
|---|---|---|---|---|---|---|
| 1 | F001 | Mahatma Gandhi | Gujarat | 1869 | 21.8090 | 72.1360 |
| 2 | F002 | Bhagat Singh | Punjab | 1907 | 31.1471 | 75.3412 |
| 3 | F003 | Subhas Chandra Bose | WestBengal | 1897 | 22.5726 | 88.3639 |
| 4 | F004 | Jawaharlal Nehru | UttarPradesh | 1889 | 26.8467 | 80.9462 |
| 5 | F005 | Sardar Vallabhbhai Patel | Gujarat | 1875 | 23.0225 | 72.5714 |
| 6 | F006 | Rani Lakshmibai | Jhansi | 1828 | 25.4460 | 78.5689 |
| 7 | F007 | Bal Gangadhar Tilak | Maharashtra | 1856 | 18.5204 | 73.8567 |
| 8 | F008 | Lala Lajpat Rai | Punjab | 1865 | 28.7041 | 77.1025 |
| 9 | F009 | Annie Besant | Madras | 1847 | 13.0827 | 80.2707 |
| 10 | F010 | Subramania Bharati | TamilNadu | 1882 | 10.7905 | 79.1370 |
| 11 | F011 | Chittaranjan Das | Kolkata | 1870 | 22.5726 | 88.3639 |
| 12 | F012 | Khan Abdul Ghaffar Khan | Peshawar | 1890 | 34.0151 | 71.5249 |
data plot_points;
set plot_points end=last;
output;
if last then do;
NAME = "Satyavati Devi";
STATE = "New Delhi";
FIGHTER_ID = "F013";
BIRTH_YEAR = 1905;
Latitude = 28.6139;
Longitude = 77.2090;
output;
end;
run;
proc print data=work.plot_points;
run;
OUTPUT:
| Obs | FIGHTER_ID | NAME | STATE | BIRTH_YEAR | LATITUDE | LONGITUDE |
|---|---|---|---|---|---|---|
| 1 | F001 | Mahatma Gandhi | Gujarat | 1869 | 21.8090 | 72.1360 |
| 2 | F002 | Bhagat Singh | Punjab | 1907 | 31.1471 | 75.3412 |
| 3 | F003 | Subhas Chandra Bose | WestBengal | 1897 | 22.5726 | 88.3639 |
| 4 | F004 | Jawaharlal Nehru | UttarPradesh | 1889 | 26.8467 | 80.9462 |
| 5 | F005 | Sardar Vallabhbhai Patel | Gujarat | 1875 | 23.0225 | 72.5714 |
| 6 | F006 | Rani Lakshmibai | Jhansi | 1828 | 25.4460 | 78.5689 |
| 7 | F007 | Bal Gangadhar Tilak | Maharashtra | 1856 | 18.5204 | 73.8567 |
| 8 | F008 | Lala Lajpat Rai | Punjab | 1865 | 28.7041 | 77.1025 |
| 9 | F009 | Annie Besant | Madras | 1847 | 13.0827 | 80.2707 |
| 10 | F010 | Subramania Bharati | TamilNadu | 1882 | 10.7905 | 79.1370 |
| 11 | F011 | Chittaranjan Das | Kolkata | 1870 | 22.5726 | 88.3639 |
| 12 | F012 | Khan Abdul Ghaffar Khan | Peshawar | 1890 | 34.0151 | 71.5249 |
| 13 | F013 | Satyavati Devi | New Delhi | 1905 | 28.6139 | 77.2090 |
proc sgplot data=plot_points;
scatter x=Longitude y=Latitude / datalabel=NAME markerattrs=(symbol=CircleFilled size=8);
xaxis label='Longitude';
yaxis label='Latitude';
title 'Indian Freedom Fighters - Geographic Scatter Plot (Longitude x Latitude)';
run;
OUTPUT:
5. Macro-driven mapping
5.1 Macro %make_scatter_map
%macro make_scatter_map(ds=work.freedom_dist, reflat=28.6139, reflon=77.2090, title=Freedom Fighters Map);
/* Create a 1-point dataset for the reference location */
data work._refpoint;
length Label $30;
Longitude = &reflon.;
Latitude = &reflat.;
Label = "Reference Point";
run;
ods graphics / reset width=900px height=600px imagename="map_&sysdate9._&systime";
proc sgplot data=&ds.;
scatter x=Longitude y=Latitude /
datalabel=NAME
markerattrs=(symbol=CircleFilled size=8 color=blue);
run;
proc sgplot data=work._refpoint;
scatter x=Longitude y=Latitude /
datalabel=Label
markerattrs=(symbol=StarFilled color=red size=14);
xaxis label='Longitude';
yaxis label='Latitude';
title "&title";
run;
%mend make_scatter_map;
%make_scatter_map(ds=work.freedom_raw, title=Freedom Fighters Of India);
OUTPUT:
No comments:
Post a Comment