Function that checks if a variable has no missing values for each subject.

check.nomiss(x, id, data, out=1)

Arguments

x

argument to specify the variable to check.

id

argument to specify a subject id variable.

data

optional data frame that contains the variables specified above.

out

either a string or an integer (1 = "logical", 2 = "id", 3 = "data") indicating what information should be returned in case there are subjects where the variable is not time-invariant.

Details

The function checks if the values of a variable do not contain any missing values for each subject.

Value

When out = 1 or out = "logical", the function simply returns a logical (i.e., TRUE or FALSE), depending on whether the variable contains no missing values within each subject.

When out = 2 or out = "id", the function returns a vector with the ids of those subjects where the variable contains missing values.

When out = 3 or out = "data", the function returns the data for those subjects where the variable contains missing values.

Author

Wolfgang Viechtbauer wvb@wvbauer.com

Examples

# illustrative dataset
dat <- data.frame(subj=rep(1:4, each=5),
                  obs = 1:5,
                  age = rep(c(20,31,27,22), each=5),
                  stress = c(2,3,1,4,2, 3,NA,3,3,3, 1,1,2,6,4, 1,2,1,3,1))
dat
#>    subj obs age stress
#> 1     1   1  20      2
#> 2     1   2  20      3
#> 3     1   3  20      1
#> 4     1   4  20      4
#> 5     1   5  20      2
#> 6     2   1  31      3
#> 7     2   2  31     NA
#> 8     2   3  31      3
#> 9     2   4  31      3
#> 10    2   5  31      3
#> 11    3   1  27      1
#> 12    3   2  27      1
#> 13    3   3  27      2
#> 14    3   4  27      6
#> 15    3   5  27      4
#> 16    4   1  22      1
#> 17    4   2  22      2
#> 18    4   3  22      1
#> 19    4   4  22      3
#> 20    4   5  22      1

# check if the age variable contains no missings
check.nomiss(age, subj, data=dat)
#> [1] TRUE

# check if the stress variable contains no missings
check.nomiss(stress, subj, data=dat)
#> [1] FALSE

# for which subjects are there missing values?
check.nomiss(stress, subj, data=dat, out=2)
#> [1] "2"

# show the data for those subjects
check.nomiss(stress, subj, data=dat, out=3)
#>    subj obs age stress
#> 6     2   1  31      3
#> 7     2   2  31     NA
#> 8     2   3  31      3
#> 9     2   4  31      3
#> 10    2   5  31      3