Previous Page | Next Page

SAS Data Set Options

OBS= Data Set Option



Specifies the last observation that SAS processes in a data set.
Valid in: DATA step and PROC steps
Category: Observation Control
Default: MAX
Restriction: Use with input data sets only
Restriction: Cannot use with PROC SQL views

Syntax
Syntax Description
Details
Comparisons
Examples
Example 1: Using OBS= to Specify When to Stop Processing Observations
Example 2: Using OBS= with WHERE Processing
Example 3: Using OBS= When Observations Are Deleted
See Also

Syntax

OBS= n | nK | nM | nG | nT | hexX | MIN | MAX


Syntax Description

n | nK | nM | nG | nT

specifies a number to indicate when to stop processing observations, with n being an integer. Using one of the letter notations results in multiplying the integer by a specific value. That is, specifying K (kilo) multiplies the integer by 1,024, M (mega) multiplies by 1,048,576, G (giga) multiplies by 1,073,741,824, or T (tera) multiplies by 1,099,511,627,776. For example, a value of 20 specifies 20 observations, while a value of 3m specifies 3,145,728 observations.

hexX

specifies a number to indicate when to stop processing as a hexadecimal value. You must specify the value beginning with a number (0-9), followed by an X. For example, the hexadecimal value F8 must be specified as 0F8x in order to specify the decimal equivalent of 248. The value 2dx specifies the decimal equivalent of 45.

MIN

sets the number to indicate when to stop processing to 0. Use OBS=0 in order to create an empty data set that has the structure, but not the observations, of another data set.

Interaction: If OBS=0 and the NOREPLACE option is in effect, then SAS can still take certain actions because it actually executes each DATA and PROC step in the program, using no observations. For example, SAS executes procedures, such as CONTENTS and DATASETS, that process libraries or SAS data sets.
MAX

sets the number to indicate when to stop processing to the maximum number of observations in the data set, up to the largest 8-byte, signed integer, which is 263-1, or approximately 9.2 quintillion. This is the default.


Details

OBS= tells SAS when to stop processing observations. To determine when to stop processing, SAS uses the value for OBS= in a formula that includes the value for OBS= and the value for FIRSTOBS=. The formula is

(obs - firstobs) + 1 = results

For example, if OBS=10 and FIRSTOBS=1 (which is the default for FIRSTOBS=), the result is ten observations, that is (10 - 1) + 1 = 10. If OBS=10 and FIRSTOBS=2, the result is nine observations, that is (10 - 2) + 1 = 9. OBS= is valid only when an existing SAS data set is read.


Comparisons


Examples


Example 1: Using OBS= to Specify When to Stop Processing Observations

This example illustrates the result of using OBS= to tell SAS when to stop processing observations. This example creates a SAS data set and executes the PRINT procedure with FIRSTOBS=2 and OBS=12. The result is 11 observations, that is (12 - 2) + 1 = 11. The result of OBS= in this situation appears to be the observation number that SAS processes last, because the output starts with observation 2, and ends with observation 12. This situation is only a coincidence.

data Ages;
   input Name $ Age;
   datalines;
Miguel 53
Brad 27
Willie 69
Marc 50
Sylvia 40
Arun 25
Gary 40
Becky 51
Alma 39
Tom 62
Kris 66
Paul 60
Randy 43
Barbara 52
Virginia 72
;
proc print data=Ages (firstobs=2 obs=12);
run;

PROC PRINT Output Using OBS= and FIRSTOBS=

                               The SAS System                         1

                            Obs    Name      Age

                              2    Brad       27
                              3    Willie     69
                              4    Marc       50
                              5    Sylvia     40
                              6    Arun       25
                              7    Gary       40
                              8    Becky      51
                              9    Alma       39
                             10    Tom        62
                             11    Kris       66
                             12    Paul       60

Example 2: Using OBS= with WHERE Processing

This example illustrates the result of using OBS= along with WHERE processing. The example uses the data set that was created in Example 1, which contains 15 observations.

First, here is the PRINT procedure with a WHERE statement. The subset of the data results in 12 observations:

proc print data=Ages;                                                                                            
   where Age LT 65;                                                                                                                     
run;

PROC PRINT Output Using a WHERE Statement

                               The SAS System                         1

                            Obs    Name       Age

                              1    Miguel      53
                              2    Brad        27
                              4    Marc        50
                              5    Sylvia      40
                              6    Arun        25
                              7    Gary        40
                              8    Becky       51
                              9    Alma        39
                             10    Tom         62
                             12    Paul        60
                             13    Randy       43
                             14    Barbara     52

Executing the PRINT procedure with the WHERE statement and OBS=10 results in 10 observations, that is (10 - 1) + 1 = 10. Note that with WHERE processing, SAS first subsets the data and applies OBS= to the subset.

proc print data=Ages (obs=10);                                                                                            
   where Age LT 65;                                                                                                                     
run;

PROC PRINT Output Using a WHERE Statement and OBS=

                               The SAS System                         2

                            Obs    Name      Age

                              1    Miguel     53
                              2    Brad       27
                              4    Marc       50
                              5    Sylvia     40
                              6    Arun       25
                              7    Gary       40
                              8    Becky      51
                              9    Alma       39
                             10    Tom        62
                             12    Paul       60

The result of OBS= appears to be how many observations to process, because the output consists of 10 observations, ending with the observation number 12. However, the result is only a coincidence. If you apply FIRSTOBS=2 and OBS=10 to the subset, then the result is nine observations, that is (10 - 2) + 1 = 9. OBS= in this situation is neither the observation number to end with nor how many observations to process; the value is used in the formula to determine when to stop processing.

proc print data=Ages (firstobs=2 obs=10);                                                                                            
   where Age LT 65;                                                                                                                     
run;

PROC PRINT Output Using WHERE Statement, OBS=, and FIRSTOBS=

                               The SAS System                         3

                            Obs    Name      Age

                              2    Brad       27
                              4    Marc       50
                              5    Sylvia     40
                              6    Arun       25
                              7    Gary       40
                              8    Becky      51
                              9    Alma       39
                             10    Tom        62
                             12    Paul       60

Example 3: Using OBS= When Observations Are Deleted

This example illustrates the result of using OBS= for a data set that has deleted observations. The example uses the data set that was created in Example 1, with observation 6 deleted.

First, here is PROC PRINT output of the modified file:

proc print data=Ages;
run;

PROC PRINT Output Showing Observation 6 Deleted

                               The SAS System                         1

                           Obs    Name        Age

                             1    Miguel       53
                             2    Brad         27
                             3    Willie       69
                             4    Marc         50
                             5    Sylvia       40
                             7    Gary         40
                             8    Becky        51
                             9    Alma         39
                            10    Tom          62
                            11    Kris         66
                            12    Paul         60
                            13    Randy        43
                            14    Barbara      52
                            15    Virginia     72

Executing the PRINT procedure with OBS=12 results in 12 observations, that is (12 - 1) + 1 = 12:

proc print data=Ages (obs=12);
run;

PROC PRINT Output Using OBS=

                               The SAS System                         2

                            Obs    Name      Age

                              1    Miguel     53
                              2    Brad       27
                              3    Willie     69
                              4    Marc       50
                              5    Sylvia     40
                              7    Gary       40
                              8    Becky      51
                              9    Alma       39
                             10    Tom        62
                             11    Kris       66
                             12    Paul       60
                             13    Randy      43

The result of OBS= appears to be how many observations to process, because the output consists of 12 observations, ending with the observation number 13. However, if you apply FIRSTOBS=2 and OBS=12, the result is 11 observations, that is (12 - 2) + 1 = 11. OBS= in this situation is neither the observation number to end with nor how many observations to process; the value is used in the formula to determine when to stop processing.

proc print data=Ages (firstobs=2 obs=12);
run;

PROC PRINT Output Using OBS= and FIRSTOBS=

                               The SAS System                         3

                            Obs    Name      Age

                              2    Brad       27
                              3    Willie     69
                              4    Marc       50
                              5    Sylvia     40
                              7    Gary       40
                              8    Becky      51
                              9    Alma       39
                             10    Tom        62
                             11    Kris       66
                             12    Paul       60
                             13    Randy      43

See Also

Data Set Options:

FIRSTOBS= Data Set Option

Statements:

INFILE Statement

WHERE Statement

System Options:

OBS= System Option

For more information about using OBS= with WHERE processing, see Processing a Segment of Data That Is Conditionally Selected in SAS Language Reference: Concepts.

Previous Page | Next Page | Top of Page