我想使用across
创建新的列,并且新的列与旧的列插入。在本例中,我手动重新定位列以显示所需的输出。但是我想自动地这样做,就像我在mutate
中的尝试一样,这显然不起作用。
library(dplyr)
df <- tibble(a = 1:2, x_b = 1:2, x_c = 1:2)
df |>
mutate(across(starts_with("x_"),
~ .x * 2,
.names = "{sub('x_', 'y_', .col)}"),
.after = c(x_b, x_c)) |>
relocate(y_b, .after = x_b) |>
relocate(y_c, .after = x_c)
#> # A tibble: 2 × 5
#> a x_b y_b x_c y_c
#> <int> <int> <dbl> <int> <dbl>
#> 1 1 1 2 1 2
#> 2 2 2 4 2 4
创建于2023-05-18带有reprex v2.0.2
3条答案
按热度按时间3htmauhk1#
我们可以创建一个tibble/data.frame,使用
.unpack
选项并重命名列mhd8tkvw2#
我经常使用的一个肮脏的解决方法:
mrwjdhj33#
这个结果符合你的要求吗?如果可能,请提供预期的输出。
输出: