R Tutorial Part Three: Selecting Subsets and Comparing Means Using an Independent Sample t Test

A tutorial by Douglas M. Wiig

As discussed in previous segments of this tutorial, for anyone interested in researching social science questions there is a wealth of survey data available through the National Opinion Research Center (NORC) and its associated research universities. The Center has been conducting a national survey each year since 1972 and has compiled a massive database of data from these surveys. Most if not all of these data files can be accessed and downloaded without charge. I have been working with the 2014 edition of the data and for all part of this tutorial will use the GSS2014 data file that is available for download on the Center’s web site. (See the NORC main website at http://www.norc.org/Research/Projects/Pages/general-social-survey.aspx and at http://www3.norc.org/GSS+Website ).

`Accessing and loading the NORC GSS2014 data set was discussed in part one of this tutorial. Refer to it if you need specific information on downloading the data set in STATA or SPSS format. In this segment we will use the subset function to select a desired set of cases from all of the cases in the data file that meet certain criteria. As indicated in my previous tutorial the GSS2014 data set contains a total of 2588 cases and 866 variables.`

Before starting this segment of the tutorial be sure that theforeignpackage is installed and loaded into your R session. Import the GSS 2014 data file and load it into the data frame ‘Dataset’ using: ######################################################## #import GSS2014 file in SPSS .sav format #uses foreign package ########################################################require(foreign)Dataset <- read.spss("/path to your location/GSS2014.sav",use.value.labels=TRUE, max.value.labels=Inf, to.data.frame=TRUE)

###########################################################

In the previous segment of this tutorial we started to investigate whether or not an individual’s education had an effect on their response to a NORC survey item dealing with abortion. The item asked respondents to either ‘AGREE’ or ‘DISAGREE’ with the statement ‘A women should be allowed to obtain an abortion under any circumstances.’ We selected a subset of all of the respondents who answered ‘AGREE’ and a second subset of all the respondents who answered ‘DISAGREE’ using the following code:

##############################################

#select subset from Dataset and write to data frame SS1

###################################################SS1 <- subset(Dataset, abany == "YES", select=educ)

**View(SS1)**

#######################################################

###################################################### #select subset from Dataset and write to data frame SS2 ######################################################SS2 <- subset(Dataset, abany == "NO", select=educ)View(SS2)

A mean number of years of education can be calculated for each of the subsets using the following:

**#calculate descriptive statistics for SS1 and SS2**

####################################################

**summary(SS1)**

**summary(SS2)**

**####################################################**

Output from the above for SS1 is:

In this tutorial I will use the Student’s t test function t.test that is found in the *stats* package. The function is used in the following form:

**t.test =(x,y, alternative = c(“two.sided”, “less”, “greater”), mu=0, paired = FALSE, var.equal = FALSE, conf.level = .95)**

**where x and y = numeric vectors of data values**

**alternative = specification of a one-tailed or two-tailed test**

**mu = 0 specification that true difference between means is zero**

**paired = FALSE specification of a two independent sample test; if TRUE a paired samples test will be used**

**var.equal = specification of equal variances of the two samples; if TRUE the pooled variance is used otherwise a Welsh approximation of degrees of freedom is used**

**conf.level = confidence level of the interval**

For further information see the documentation in CRAN help files for the function *t.test()*.

Using the vectors selected from the dataset SS1, and SS2 the t test is performed using:

**###########################################################**

**#perform a t test to compare sample means**

**#########################################################**

**t.test(SS1,SS2, alternative = c(“two.sided”), mu=0, paired=FALSE, var.equal = TRUE, conf.level = .95)**

**###########################################################**

Resulting in output of:

Two Sample t-testdata: SS1 and SS2t = 11.1356, df = 1650, p-value < 2.2e-16alternative hypothesis: true difference in means is not equal to 095 percent confidence interval:1.369673 1.955333sample estimates:mean of x mean of y14.59517 12.93267

We can see that the difference between the mean years of education for the ‘YES’ and the ‘NO’ samples is significant at an alpha level of p=.05. Subsets can also be used to compare means involving more than two samples and using simple one-way Analysis of Variance. This will be covered in the next part of the tutorial.