【发布时间】:2021-06-14 18:58:54
【问题描述】:
考虑下面的代码。
set.seed(56)
library(dplyr)
df <- data.frame(
NUM_1 = sample.int(500, replace = TRUE),
DENOM_1 = sample.int(500, replace = TRUE),
NUM_2 = sample.int(500, replace = TRUE),
DENOM_2 = sample.int(500, replace = TRUE)
)
head(df)
NUM_1 DENOM_1 NUM_2 DENOM_2
1 417 379 154 173
2 160 437 239 154
3 243 315 106 361
4 291 169 393 340
5 170 450 429 421
6 422 131 75 64
无需手动指定每个列名(实际问题有大约 40 个我需要创建),我想为其创建列 FRAC_1 和 FRAC_2 FRAC_X = NUM_X/DENOM_X.
所以,这将是我正在寻找的关于输出的内容,但由于我正在处理其中大约 40 个,我不想手动输入每一列:
df_frac <- df %>%
mutate(FRAC_1 = NUM_1 / DENOM_1,
FRAC_2 = NUM_2 / DENOM_2)
head(df_frac)
NUM_1 DENOM_1 NUM_2 DENOM_2 FRAC_1 FRAC_2
1 417 379 154 173 1.1002639 0.8901734
2 160 437 239 154 0.3661327 1.5519481
3 243 315 106 361 0.7714286 0.2936288
4 291 169 393 340 1.7218935 1.1558824
5 170 450 429 421 0.3777778 1.0190024
6 422 131 75 64 3.2213740 1.1718750
对此,我强烈希望使用dplyr 解决方案。我想也许我可以将mutate() 与across() 一起使用,但我不清楚如何告诉across() 将NUM_x 与相应的DENOM_x 列配对。
【问题讨论】: