在 df 中保留原始变量和新变量

问题描述 投票:0回答:1

我试图同时对多个变量进行均值中心化。我正在使用下面的代码,它将原始变量替换为以均值为中心的变量。我想保留原始变量和以平均值为中心的变量。有谁知道我如何修改我的代码来做到这一点?

vars_to_mc <- c("interview_age_1_year", "pea_wiscv_tss_baseline", 
                "cbcl_scr_dsm5_adhd_r_baseline", 
                "cbcl_scr_syn_external_r_baseline", "upps_y_ss_positive_urgency_baseline", "upps_y_ss_negative_urgency_baseline",
                "upps_y_ss_sensation_seeking_baseline",  "upps_y_ss_lack_of_planning_baseline",  "upps_y_ss_lack_of_perseverance_baseline",
                "bis_y_ss_bis_sum_baseline",  "dd_prs_resid", "ext_prs_resid", 
                "pos_urg_prs_resid", 
                "neg_urg_prs_resid", "ss_prs_resid", "preMedit_prs_resid", "pers_prs_resid", 
                "attentional_prs_resid", "non_plan_prs_resid", "motor_prs_resid", "educ_prs_resid",  
                "ple_p_ss_total_number_1_year", "ple_y_ss_total_number_1_year")

# Mean-center 
df1 <- df %>%
  mutate_at(vars(vars_to_mc), ~ . - mean(., na.rm = TRUE)) %>%
  rename_at(vars(vars_to_mc), ~ paste0(., "_mc"))
r tidyverse mutate
1个回答
0
投票

您可以通过提供 across()

 参数来使用 
.names
 来执行此操作,定义为:

描述如何命名输出列的粘合规范。这可以使用

{.col}
代表所选列名称,使用
{.fn}
代表正在应用的函数名称。

vars_to_mc  <- c("mpg", "cyl", "disp")

mtcars |>
    mutate(
        across(
            all_of(vars_to_mc),
            \(x) x - mean(x, na.rm = TRUE),
            .names = "{.col}_mc"
        )
    )

输出:

                     mpg cyl  disp  hp drat    wt  qsec vs am gear carb    mpg_mc  cyl_mc     disp_mc
Mazda RX4           21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4  0.909375 -0.1875  -70.721875
Mazda RX4 Wag       21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4  0.909375 -0.1875  -70.721875
Datsun 710          22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1  2.709375 -2.1875 -122.721875
Hornet 4 Drive      21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1  1.309375 -0.1875   27.278125
Hornet Sportabout   18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2 -1.390625  1.8125  129.278125
Valiant             18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1 -1.990625 -0.1875   -5.721875
Duster 360          14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4 -5.790625  1.8125  129.278125
Merc 240D           24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2  4.309375 -2.1875  -84.021875
Merc 230            22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2  2.709375 -2.1875  -89.921875
Merc 280            19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4 -0.890625 -0.1875  -63.121875
Merc 280C           17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4 -2.290625 -0.1875  -63.121875
Merc 450SE          16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3 -3.690625  1.8125   45.078125
Merc 450SL          17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3 -2.790625  1.8125   45.078125
Merc 450SLC         15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3 -4.890625  1.8125   45.078125
Cadillac Fleetwood  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4 -9.690625  1.8125  241.278125
Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4 -9.690625  1.8125  229.278125
Chrysler Imperial   14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4 -5.390625  1.8125  209.278125
Fiat 128            32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1 12.309375 -2.1875 -152.021875
Honda Civic         30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2 10.309375 -2.1875 -155.021875
Toyota Corolla      33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1 13.809375 -2.1875 -159.621875
Toyota Corona       21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1  1.409375 -2.1875 -110.621875
Dodge Challenger    15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2 -4.590625  1.8125   87.278125
AMC Javelin         15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2 -4.890625  1.8125   73.278125
Camaro Z28          13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4 -6.790625  1.8125  119.278125
Pontiac Firebird    19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2 -0.890625  1.8125  169.278125
Fiat X1-9           27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1  7.209375 -2.1875 -151.721875
Porsche 914-2       26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2  5.909375 -2.1875 -110.421875
Lotus Europa        30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2 10.309375 -2.1875 -135.621875
Ford Pantera L      15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4 -4.290625  1.8125  120.278125
Ferrari Dino        19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6 -0.390625 -0.1875  -85.721875
Maserati Bora       15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8 -5.090625  1.8125   70.278125
Volvo 142E          21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2  1.309375 -2.1875 -109.721875
© www.soinside.com 2019 - 2024. All rights reserved.