如何循环标准化和重命名一组变量

How to loop to standardize and rename a set of variables

我有一个包含 1000 个变量的数据集。变量的命名方式如下图所示。

现在我想用一个循环函数来标准化这1000个变量,并保留它们原来的名字。也就是说,我希望新的“SCORE.1”是标准化的“SCORE.1”,新的“SCORE.2”是标准化的“SCORE.2”。

我该怎么做?非常感谢!

也许保留 'original' 数据(例如“df_1”)并使用转换后的值创建一个新数据框(例如“df_2”)会更好,即

library(tidyverse)

# Create some fake data
set.seed(123)
names <- paste("SCORE", 1:1000, sep = ".")
IDs <- 1:100
m <- matrix(sample(1:20, 10000, replace = TRUE), ncol = 1000, nrow = 100,
            dimnames=list(IDs, names))
df_1 <- as.data.frame(m)

head(df_1)
#>   SCORE.1 SCORE.2 SCORE.3 SCORE.4 SCORE.5 SCORE.6 SCORE.7 SCORE.8 SCORE.9
#> 1      15       6       9      15      11       7       9       8       6
#> 2      19      16      16      19      15       4      16      20       4
#> 3      14      11      17       6      20      10       9      11       3
#> 4       3       4      13      16       2      17       2      18      14
#> 5      10      12       8      15      16      16       9      14      19
#> 6      18      14       7      19      19       8      11       3      14

# Transform the 'original' fake data into 'new' fake data
df_2 <- df_1 %>%
  mutate(across(everything(), ~(.x - mean(.x) / sd(.x))))
head(df_2)
#>      SCORE.1   SCORE.2   SCORE.3   SCORE.4    SCORE.5  SCORE.6    SCORE.7
#> 1 12.8991333  4.105098  7.164641 13.001316  9.2716116  5.25409  7.1758716
#> 2 16.8991333 14.105098 14.164641 17.001316 13.2716116  2.25409 14.1758716
#> 3 11.8991333  9.105098 15.164641  4.001316 18.2716116  8.25409  7.1758716
#> 4  0.8991333  2.105098 11.164641 14.001316  0.2716116 15.25409  0.1758716
#> 5  7.8991333 10.105098  6.164641 13.001316 14.2716116 14.25409  7.1758716
#> 6 15.8991333 12.105098  5.164641 17.001316 17.2716116  6.25409  9.1758716

这是否回答了您的问题?