1. Introduction
This module demonstrates how to subset data based on variables (using the
keep and drop
subcommands on the save command) and how to subset observations using the
select if
command. The SPSS file structure is similar to a spreadsheet. An SPSS data file contains
variables, which are like columns on a spreadsheet, and observations (or cases or
subjects) which are like the rows on a spreadsheet. Sometimes data files contain
information that is superfluous to a particular analysis and you might want to make a data
file that has just the variables and/or observations you need for that analysis.
The following program reads the instream raw data file
and creates an SPSS data file called auto.sav. (For information about
creating SPSS files from raw data, see the SPSS Learning Module on
Inputting Data into SPSS.)
DATA LIST FIXED/ make (A17) price 19-23 mpg 25-26 rep78 28 hdroom 30-32 (F,1) trunk 34-35 weight 37-40 length 42-44 turn 46-47 displ 49-51 gratio 53-56 (F,2) foreign 58. BEGIN DATA. AMC Concord 4099 22 3 2.5 11 2930 186 40 121 3.58 0 AMC Pacer 4749 17 3 3.0 11 3350 173 40 258 2.53 0 AMC Spirit 3799 22 . 3.0 12 2640 168 35 121 3.08 0 Audi 5000 9690 17 5 3.0 15 2830 189 37 131 3.20 1 Audi Fox 6295 23 3 2.5 11 2070 174 36 97 3.70 1 BMW 320i 9735 25 4 2.5 12 2650 177 34 121 3.64 1 Buick Century 4816 20 3 4.5 16 3250 196 40 196 2.93 0 Buick Electra 7827 15 4 4.0 20 4080 222 43 350 2.41 0 Buick LeSabre 5788 18 3 4.0 21 3670 218 43 231 2.73 0 Buick Opel 4453 26 . 3.0 10 2230 170 34 304 2.87 0 Buick Regal 5189 20 3 2.0 16 3280 200 42 196 2.93 0 Buick Riviera 10372 16 3 3.5 17 3880 207 43 231 2.93 0 Buick Skylark 4082 19 3 3.5 13 3400 200 42 231 3.08 0 Cad. Deville 11385 14 3 4.0 20 4330 221 44 425 2.28 0 Cad. Eldorado 14500 14 2 3.5 16 3900 204 43 350 2.19 0 Cad. Seville 15906 21 3 3.0 13 4290 204 45 350 2.24 0 Chev. Chevette 3299 29 3 2.5 9 2110 163 34 231 2.93 0 Chev. Impala 5705 16 4 4.0 20 3690 212 43 250 2.56 0 Chev. Malibu 4504 22 3 3.5 17 3180 193 31 200 2.73 0 Chev. Monte Carlo 5104 22 2 2.0 16 3220 200 41 200 2.73 0 Chev. Monza 3667 24 2 2.0 7 2750 179 40 151 2.73 0 Chev. Nova 3955 19 3 3.5 13 3430 197 43 250 2.56 0 Datsun 200 6229 23 4 1.5 6 2370 170 35 119 3.89 1 Datsun 210 4589 35 5 2.0 8 2020 165 32 85 3.70 1 Datsun 510 5079 24 4 2.5 8 2280 170 34 119 3.54 1 Datsun 810 8129 21 4 2.5 8 2750 184 38 146 3.55 1 Dodge Colt 3984 30 5 2.0 8 2120 163 35 98 3.54 0 Dodge Diplomat 4010 18 2 4.0 17 3600 206 46 318 2.47 0 Dodge Magnum 5886 16 2 4.0 17 3600 206 46 318 2.47 0 Dodge St. Regis 6342 17 2 4.5 21 3740 220 46 225 2.94 0 Fiat Strada 4296 21 3 2.5 16 2130 161 36 105 3.37 1 Ford Fiesta 4389 28 4 1.5 9 1800 147 33 98 3.15 0 Ford Mustang 4187 21 3 2.0 10 2650 179 43 140 3.08 0 Honda Accord 5799 25 5 3.0 10 2240 172 36 107 3.05 1 Honda Civic 4499 28 4 2.5 5 1760 149 34 91 3.30 1 Linc. Continental 11497 12 3 3.5 22 4840 233 51 400 2.47 0 Linc. Mark V 13594 12 3 2.5 18 4720 230 48 400 2.47 0 Linc. Versailles 13466 14 3 3.5 15 3830 201 41 302 2.47 0 Mazda GLC 3995 30 4 3.5 11 1980 154 33 86 3.73 1 Merc. Bobcat 3829 22 4 3.0 9 2580 169 39 140 2.73 0 Merc. Cougar 5379 14 4 3.5 16 4060 221 48 302 2.75 0 Merc. Marquis 6165 15 3 3.5 23 3720 212 44 302 2.26 0 Merc. Monarch 4516 18 3 3.0 15 3370 198 41 250 2.43 0 Merc. XR-7 6303 14 4 3.0 16 4130 217 45 302 2.75 0 Merc. Zephyr 3291 20 3 3.5 17 2830 195 43 140 3.08 0 Olds 98 8814 21 4 4.0 20 4060 220 43 350 2.41 0 Olds Cutl Supr 5172 19 3 2.0 16 3310 198 42 231 2.93 0 Olds Cutlass 4733 19 3 4.5 16 3300 198 42 231 2.93 0 Olds Delta 88 4890 18 4 4.0 20 3690 218 42 231 2.73 0 Olds Omega 4181 19 3 4.5 14 3370 200 43 231 3.08 0 Olds Starfire 4195 24 1 2.0 10 2730 180 40 151 2.73 0 Olds Toronado 10371 16 3 3.5 17 4030 206 43 350 2.41 0 Peugeot 604 12990 14 . 3.5 14 3420 192 38 163 3.58 1 Plym. Arrow 4647 28 3 2.0 11 3260 170 37 156 3.05 0 Plym. Champ 4425 34 5 2.5 11 1800 157 37 86 2.97 0 Plym. Horizon 4482 25 3 4.0 17 2200 165 36 105 3.37 0 Plym. Sapporo 6486 26 . 1.5 8 2520 182 38 119 3.54 0 Plym. Volare 4060 18 2 5.0 16 3330 201 44 225 3.23 0 Pont. Catalina 5798 18 4 4.0 20 3700 214 42 231 2.73 0 Pont. Firebird 4934 18 1 1.5 7 3470 198 42 231 3.08 0 Pont. Grand Prix 5222 19 3 2.0 16 3210 201 45 231 2.93 0 Pont. Le Mans 4723 19 3 3.5 17 3200 199 40 231 2.93 0 Pont. Phoenix 4424 19 . 3.5 13 3420 203 43 231 3.08 0 Pont. Sunbird 4172 24 2 2.0 7 2690 179 41 151 2.73 0 Renault Le Car 3895 26 3 3.0 10 1830 142 34 79 3.72 1 Subaru 3798 35 5 2.5 11 2050 164 36 97 3.81 1 Toyota Celica 5899 18 5 2.5 14 2410 174 36 134 3.06 1 Toyota Corolla 3748 31 5 3.0 9 2200 165 35 97 3.21 1 Toyota Corona 5719 18 5 2.0 11 2670 175 36 134 3.05 1 Volvo 260 11995 17 5 2.5 14 3170 193 37 163 2.98 1 VW Dasher 7140 23 4 2.5 12 2160 172 36 97 3.74 1 VW Diesel 5397 41 5 3.0 15 2040 155 35 90 3.78 1 VW Rabbit 4697 25 4 3.0 15 1930 155 35 89 3.78 1 VW Scirocco 6850 25 4 2.0 16 1990 156 36 97 3.78 1 END DATA. SAVE OUTFILE = 'auto.sav'.
We will now use the display names
command to see the names of the variables in the current data file.
DISPLAY NAMES.
As we expect, this shows us the names of all of the
variables that we read on the data list command.
Currently Defined Variables MAKE MPG HDROOM WEIGHT TURN DISPL GRATIO FOREIGN PRICE REP78 TRUNK LENGTH
2. Subsetting variables
If we wanted to examine the relationship between mpg
and price for various makes, but had no interest in the
automobile’s dimensions, we could create a smaller file called auto2.sav
that will have just these three variables:
SAVE OUTFILE= 'auto2.sav' /KEEP make mpg price.
This does not influence the current data file. If
we use the display names command now, we will see that
all of the variables are still present.
DISPLAY NAMES.
As we see below, all of the variables are still present.
Currently Defined Variables MAKE MPG HDROOM WEIGHT TURN DISPL GRATIO FOREIGN PRICE REP78 TRUNK LENGTH
If we read the file auto2.sav, we will
see that the file auto2.sav has been subsetted and has just the variables
make mpg and price.
GET FILE = 'auto2.sav'. DISPLAY NAMES.
As we see below, just make mpg
and price are present.
Currently Defined Variables MAKE MPG PRICE
Let’s get the auto.sav
file, and then illustrate subsetting using the drop subcommand. We
will save the file calling it auto3.sav and we will use the
drop
subcommand to drop all of the variables except for make
mpg
and price. We then get the file auto3.sav and then
issue the display names command.
GET FILE='auto.sav'. SAVE OUTFILE= 'auto3.sav' /DROP rep78 hdroom trunk weight length turn displ gratio foreign. GET FILE='auto3.sav'. DISPLAY NAMES.
As we expect, the file auto3.sav
contains just the variables make price and
mpg.
It would be more common to use the dropsubcommand when you want to
drop just a small number of variables, and it would be more common to use the
keep
subcommand when you want to keep just a small number of variables.
Currently Defined Variables MAKE PRICE MPG
3. Subsetting observations
The above illustrates the use of keep
and drop subcommands for subsetting variables. The following will
illustrate the use of select if to subset observations (sometimes called
cases).
The auto file contains a variable rep78
with data values from 1 to 5, and missing, which we ascertain from running the following
program:
GET FILE='auto.sav'. FREQUENCIES VARIABLES=rep78.
The table below shows that there are 5 observations
where rep78 is missing, and 69 observations where rep78
is not missing.
REP78
Valid Cum
Value Label Value Frequency Percent Percent Percent
1 2 2.7 2.9 2.9
2 8 10.8 11.6 14.5
3 30 40.5 43.5 58.0
4 18 24.3 26.1 84.1
5 11 14.9 15.9 100.0
. 5 6.8 Missing
------- ------- -------
Total 74 100.0 100.0
Valid cases 69 Missing cases 5
If we are only interested in cars with data where rep78
is not missing, we may eliminate records with missing data from the file by using
select if as shown below.
SELECT IF NOT MISSING(rep78). FREQUENCIES VARIABLES=rep78.
As we see below, the select if
eliminated the observations with missing values. At this point we could save the
file and we would have just the 69 observations where rep78 was not
missing.
REP78
Valid Cum
Value Label Value Frequency Percent Percent Percent
1 2 2.9 2.9 2.9
2 8 11.6 11.6 14.5
3 30 43.5 43.5 58.0
4 18 26.1 26.1 84.1
5 11 15.9 15.9 100.0
------- ------- -------
Total 69 100.0 100.0
Valid cases 69 Missing cases 0
The following program gets the auto.sav
file and then uses select if to select just the observations where
rep78
is 3 or smaller.
GET FILE='auto.sav'. SELECT IF (REP78 <= 3). FREQUENCIES VARIABLES=rep78.
The frequencies results are shown
below, confirming that the select if worked correctly. If we
wanted, we could save the file at this time to create a subset that has just the
observations where rep78 is 3 or smaller.
REP78
Valid Cum
Value Label Value Frequency Percent Percent Percent
1 2 5.0 5.0 5.0
2 8 20.0 20.0 25.0
3 30 75.0 75.0 100.0
------- ------- -------
Total 40 100.0 100.0
Valid cases 40 Missing cases 0
The following program is similar to the one above,
except that it selects the observations where rep78 is 4 or higher.
GET FILE='auto.sav'. SELECT IF (REP78 >= 4). FREQUENCIES VARIABLES=rep78.
The results from frequencies is shown
below, confirming that just the observations where rep78 is 4 or greater
have been selected.
REP78
Valid Cum
Value Label Value Frequency Percent Percent Percent
4 18 62.1 62.1 62.1
5 11 37.9 37.9 100.0
------- ------- -------
Total 29 100.0 100.0
Valid cases 29 Missing cases 0
4. Problems to look out for
- When you create a subset of your original data, sometimes
you may drop variables or cases that you did not intend to drop. If you find
variables or cases are gone that should not be gone, double check your subsetting
commands.
5. For more information
- For information on making SPSS data files from raw data
see Inputting data into SPSS.