Using the _OBSTAT_ Variable in SAS Procedures

The _OBSTAT_ variable is often used in conjunction with a SAS procedure to analyze observations that satisfy certain criteria. For example, you might want to perform a linear regression only on observations that have the Include in Analysis property. Or you might want to compute a correlation matrix only for observations that are represented by a square marker shape.

The _OBSTAT_ variable contains information about the state of observations in SAS/IML Studio. It is often convenient to use the DATA step to split the single _OBSTAT_ variable into several indicator variables so that it is easier to use a WHERE clause to choose only observations that have a desired property.

To use the _OBSTAT_ variable to select observations for analysis by a SAS procedure:

  1. Create an _OBSTAT_ variable by selecting Generate _OBSTAT_ Variable from the variable menu.

  2. Save the augmented data to a SAS data set such as SASUSER.MyData.

  3. Use the following DATA step to extract each observation property into its own variable:

    /* Create numerical variables from an _OBSTAT_ variable. */
    data MyData;
    set sasuser.MyData;
    ObsIsSelected   = inputn(substr(_obstat_,  1, 1), 1.);
    ObsIsInPlots    = inputn(substr(_obstat_,  2, 1), 1.);
    ObsIsInAnalysis = inputn(substr(_obstat_,  3, 1), 1.);
    ObsIsLabeled    = inputn(substr(_obstat_,  4, 1), 1.);
    ObsMarkerShape  = inputn(substr(_obstat_,  5, 1), 1.);
    ObsMarkerRed    = inputn(substr(_obstat_,  6, 5), 5.);
    ObsMarkerGreen  = inputn(substr(_obstat_, 11, 5), 5.);
    ObsMarkerBlue   = inputn(substr(_obstat_, 16, 5), 5.);
  4. Use a WHERE clause to analyze only observations with a given set of properties. For example, the following statements compute a correlation matrix for observations that are represented in SAS/IML Studio by a marker shape:

    data Subset;
    set MyData(where=(ObsMarkerShape=1);
    proc corr data=Subset(drop=Obs:);