I have a dataframe with following variables
dat <- data.frame(cell.ID = 1:10, cell.name = letters[1:10],
groupID = rep(1:2, each = 5),
x1 = rnorm(10), x2 = rnorm(10),
x3 = rnorm(10), x4= rnorm(10),
x5 = rnorm(10), x6 = rnorm(10))
I have a mean and sd stored to normalise x1 to x6 in another dataframe
norm_fin <- data.frame(variable = paste0('x',1:6),
meanVar = rnorm(6),
SdVar = rnorm(6))
I want to create a new dataframe from dat
after normalised x1 to x6. I did a loop solution
varVec <- paste0('x',1:6)
dat1 <- dat
for(i in varVec){
meanRef <- norm_fin$meanVar[norm_fin$variable == i]
sdRef <- norm_fin$SdVar[norm_fin$variable == i]
dat1[, i] <- (dat[, i] - meanRef)/sdRef
}
Is there another solution without using a loop?