calc.mcent.Rd
Function that calculates the mean-centered values of a particular variable for each subject.
calc.mcent(x, id, data, na.rm=TRUE)
argument to specify the variable.
argument to specify a subject id variable.
optional data frame that contains the variables specified above.
logical indicating whether missing values should be removed before computing the means (default is TRUE
).
The function computes the mean-centered values of a particular variable for each subject, also known as ‘within-person mean centering’.
A vector.
# 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,NA,4,2, 3,3,NA,3,NA, 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 NA
#> 4 1 4 20 4
#> 5 1 5 20 2
#> 6 2 1 31 3
#> 7 2 2 31 3
#> 8 2 3 31 NA
#> 9 2 4 31 3
#> 10 2 5 31 NA
#> 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
# calculate the mean-centered values of the stress variable
dat$cstress <- calc.mcent(stress, subj, data=dat)
dat
#> subj obs age stress cstress
#> 1 1 1 20 2 -0.75
#> 2 1 2 20 3 0.25
#> 3 1 3 20 NA NA
#> 4 1 4 20 4 1.25
#> 5 1 5 20 2 -0.75
#> 6 2 1 31 3 0.00
#> 7 2 2 31 3 0.00
#> 8 2 3 31 NA NA
#> 9 2 4 31 3 0.00
#> 10 2 5 31 NA NA
#> 11 3 1 27 1 -1.80
#> 12 3 2 27 1 -1.80
#> 13 3 3 27 2 -0.80
#> 14 3 4 27 6 3.20
#> 15 3 5 27 4 1.20
#> 16 4 1 22 1 -0.60
#> 17 4 2 22 2 0.40
#> 18 4 3 22 1 -0.60
#> 19 4 4 22 3 1.40
#> 20 4 5 22 1 -0.60
# calculate the subject-level means of the stress variable
dat$mstress <- calc.mean(stress, subj, data=dat, expand=TRUE)
dat
#> subj obs age stress cstress mstress
#> 1 1 1 20 2 -0.75 2.75
#> 2 1 2 20 3 0.25 2.75
#> 3 1 3 20 NA NA 2.75
#> 4 1 4 20 4 1.25 2.75
#> 5 1 5 20 2 -0.75 2.75
#> 6 2 1 31 3 0.00 3.00
#> 7 2 2 31 3 0.00 3.00
#> 8 2 3 31 NA NA 3.00
#> 9 2 4 31 3 0.00 3.00
#> 10 2 5 31 NA NA 3.00
#> 11 3 1 27 1 -1.80 2.80
#> 12 3 2 27 1 -1.80 2.80
#> 13 3 3 27 2 -0.80 2.80
#> 14 3 4 27 6 3.20 2.80
#> 15 3 5 27 4 1.20 2.80
#> 16 4 1 22 1 -0.60 1.60
#> 17 4 2 22 2 0.40 1.60
#> 18 4 3 22 1 -0.60 1.60
#> 19 4 4 22 3 1.40 1.60
#> 20 4 5 22 1 -0.60 1.60