The HPDS2 Procedure
Getting Started: HPDS2 Procedure
This example illustrates a simple HPDS2 procedure. The DS2 code that is submitted for execution is contained within the DATA and ENDDATA statements. The following DATA step creates a data set that consists of fictitious daily temperatures that are collected from a number of U.S. airports during a period of one week:
data daily_temps;
input city $ mon tue wed thu fri;
datalines;
lax 88 92 94 97 86
sfo 65 60 75 72 74
nyc 99 95 94 95 90
phl 92 89 91 93 94
atl 95 99 92 98 94
den 85 87 89 72 73
pit 68 70 72 73 77
rdu 98 95 99 95 96
dtt 88 90 90 87 92
anc 51 56 60 64 62
sea 72 78 77 80 79
msy 98 97 99 98 99
mia 95 92 98 94 96
ord 87 85 84 80 79
dfw 95 96 97 95 97
hou 98 99 98 97 92
las 104 105 102 99 101
pdx 78 82 76 74 80
san 80 81 78 82 80
phx 95 98 95 97 100
cle 75 72 76 80 78
ont 78 80 78 81 72
tpa 94 94 92 90 92
bos 80 78 77 75 79
clt 83 80 79 80 81
;
run;
The HPDS2 procedure reads this data set and calculates a daily average temperature in Fahrenheit and Celsius for each airport and then provides a synopsis of the weekly temperature average.
In the following statements, the driver DS2GTF.out in the DATA statement refers to the output data set, and the SET DS2GTF.in statement refers to the input data set:
proc hpds2 data=daily_temps
out=avg_temps;
performance nthreads=4;
data DS2GTF.out;
dcl double avgf avgc;
dcl char(5) synopsis;
method run();
set DS2GTF.in;
avgf = mean(mon, tue, wed, thu, fri);
avgc = round((avgf - 32.0) * 5.0/9.0, .1);
if avgf >= 95.0 then synopsis = 'Hot';
else if avgf > 80.0 then synopsis = 'Warm';
else if avgf > 60.0 then synopsis = 'Mild';
else synopsis = 'Cold';
end;
enddata;
run;
The following PRINT procedure displays the table of average temperatures that are produced by the HPDS2 procedure:
proc print data=avg_temps;
title1 'Average Temperatures';
var city synopsis avgf avgc;
run;
Figure 1 displays the output of the PRINT procedure.
Figure 1: Average Temperatures
| Average Temperatures |
| Obs | city | synopsis | avgf | avgc |
|---|---|---|---|---|
| 1 | lax | Warm | 91.4 | 33.0 |
| 2 | sfo | Mild | 69.2 | 20.7 |
| 3 | nyc | Warm | 94.6 | 34.8 |
| 4 | phl | Warm | 91.8 | 33.2 |
| 5 | atl | Hot | 95.6 | 35.3 |
| 6 | den | Warm | 81.2 | 27.3 |
| 7 | pit | Mild | 72.0 | 22.2 |
| 8 | rdu | Hot | 96.6 | 35.9 |
| 9 | dtt | Warm | 89.4 | 31.9 |
| 10 | anc | Cold | 58.6 | 14.8 |
| 11 | sea | Mild | 77.2 | 25.1 |
| 12 | msy | Hot | 98.2 | 36.8 |
| 13 | mia | Hot | 95.0 | 35.0 |
| 14 | ord | Warm | 83.0 | 28.3 |
| 15 | dfw | Hot | 96.0 | 35.6 |
| 16 | hou | Hot | 96.8 | 36.0 |
| 17 | las | Hot | 102.2 | 39.0 |
| 18 | pdx | Mild | 78.0 | 25.6 |
| 19 | san | Warm | 80.2 | 26.8 |
| 20 | phx | Hot | 97.0 | 36.1 |
| 21 | cle | Mild | 76.2 | 24.6 |
| 22 | ont | Mild | 77.8 | 25.4 |
| 23 | tpa | Warm | 92.4 | 33.6 |
| 24 | bos | Mild | 77.8 | 25.4 |
| 25 | clt | Warm | 80.6 | 27.0 |