Online File

How to use this page


Rick Aster: Professional SAS Programming Shortcuts: Contents

Chapter 45
Program
Linear interpolation


proc sort data=series;
   by seq;
run;

data before (keep=seq before_seq before_v);
   set series;
   retain before_seq before_v;
   if missing(v) then do;
      if before_seq then output;
      end;
   else do;
      before_seq = seq;
      before_v = v;
      end;
run;

proc sort data=series out=reverse;
   by descending seq;
run;
data after (keep=seq after_seq after_v);
   set reverse;
   retain after_seq after_v;
   if missing(v) then do;
      if after_seq then output;
      end;
   else do;
      after_seq = seq;
      after_v = v;
      end;
run;
proc sort data=after;
   by seq;
run;

data interpol (keep=seq v source);
   merge series before after;
   by seq;
   if not missing(v) then do;
      source = 'A'; * Actual;
      output;
      end;
   else if not missing(before_v) and not missing(after_v) then do;
      source = 'I'; * Interpolated;
      v = before_v + (after_v - before_v)*
          (seq - before_seq)/(after_seq - before_seq);
      output;
      end;
   else do;
      source = 'X'; * Not available;
      v = .;
      output;
      end;
run;  
title1 'Interpolation'; 
proc print noobs heading=h;
run;

 O /\

Global
Statements

RICK ASTER

SAS

BOOKS

Tech | Dictionary

Download | Rastinate

Rick Aster

Professional SAS Programming Shortcuts

Contents/Online Files

Corrections

Catalog Page