循环和在r中创建新变量



我有一个具有多个年份和变量的数据集。我会指定多少每个,但我试图创建一个脚本,可以运行而不必复制和粘贴每个块每年/变量,所以希望代码将工作,无论这些规格。基本上,对于每个变量,我都有一个膨胀的对应项,比如INCOME和INCOME_INFLATED,我想创建一个手动膨胀的INCOME (INCOME_MANUAL),并将其与INCOME_INFLATED进行比较。

实际上,这里是我输入数据的一个例子:

CPIU15001.53

IIUC -您可以使用矩阵操作从变量块中分配数据帧的新列:

relevant_vars <- c("income", ...)
data[paste0(relevant_vars, "_manual")] <- data[relevant_vars] * data$CPIU

mtcars:

演示
relevant_vars <- names(mtcars)
mtcars$CPIU <- runif(nrow(mtcars))

mtcars[paste0(relevant_vars, "_manual")] <- mtcars[relevant_vars] * mtcars$CPIU
str(mtcars)
'data.frame':   32 obs. of  24 variables:
$ mpg        : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
$ cyl        : num  6 6 4 6 8 6 8 4 4 6 ...
$ disp       : num  160 160 108 258 360 ...
$ hp         : num  110 110 93 110 175 105 245 62 95 123 ...
$ drat       : num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
$ wt         : num  2.62 2.88 2.32 3.21 3.44 ...
$ qsec       : num  16.5 17 18.6 19.4 17 ...
$ vs         : num  0 0 1 1 0 1 0 1 1 1 ...
$ am         : num  1 1 1 0 0 0 0 0 0 0 ...
$ gear       : num  4 4 4 3 3 3 3 4 4 4 ...
$ carb       : num  4 4 1 1 2 1 4 2 2 4 ...
$ CPIU       : num  0.699 0.616 0.111 0.658 0.957 ...
$ mpg_manual : num  14.68 12.93 2.54 14.09 17.9 ...
$ cyl_manual : num  4.194 3.695 0.446 3.95 7.658 ...
$ disp_manual: num  111.8 98.5 12 169.9 344.6 ...
$ hp_manual  : num  76.9 67.7 10.4 72.4 167.5 ...
$ drat_manual: num  2.726 2.402 0.429 2.028 3.015 ...
$ wt_manual  : num  1.831 1.771 0.259 2.117 3.293 ...
$ qsec_manual: num  11.51 10.48 2.07 12.8 16.29 ...
$ vs_manual  : num  0 0 0.111 0.658 0 ...
$ am_manual  : num  0.699 0.616 0.111 0 0 ...
$ gear_manual: num  2.796 2.464 0.446 1.975 2.872 ...
$ carb_manual: num  2.796 2.464 0.111 0.658 1.915 ...

最新更新