【发布时间】:2020-11-02 23:08:58
【问题描述】:
我有一个数据框,其中存储了 4 个(或任意 N 个)变量的平均值和标准差
mean_sd_df <- data.frame(variable = c('x1', 'x2', 'x3', 'x4'),
mean_var = c(2, 3, 4, 8),
sd_var = c(0.2, 0.3, 0.4, 0.6))
我有另一个数据框,其中包含上述四个变量的值,需要使用上述数据框中的均值和 sd 进行标准化
set.seed(123)
dat.mat <- data.frame(x1 = sample(1:10, 4),
x2 = sample(1:10, 4),
x3 = sample(1:10, 4),
x4 = sample(1:10, 4))
这就是我进行标准化的方式。
dat.mat[ , 1] <- (dat.mat[ , 1] - mean_sd_df[1, 'mean_var'])/mean_sd_df[1, 'sd_var']
dat.mat[ , 2] <- (dat.mat[ , 2] - mean_sd_df[2, 'mean_var'])/mean_sd_df[2, 'sd_var']
dat.mat[ , 3] <- (dat.mat[ , 3] - mean_sd_df[3, 'mean_var'])/mean_sd_df[3, 'sd_var']
dat.mat[ , 4] <- (dat.mat[ , 4] - mean_sd_df[4, 'mean_var'])/mean_sd_df[4, 'sd_var']
如果我有很多变量,这可能会变大,所以想知道是否有更简单的方法来做到这一点?
【问题讨论】: