我想复制一个列的子集,这些列的名字后面都有数字。新列的数字后缀应该加上一个特定的偏移量(在下面的例子中是12)。
源数据框:
所需数据框:
不幸的是,我的代码根本不起作用,而且在顶部,它似乎不合理地复杂。
library(tidyverse)
df <- data.frame(
v_1 = c('Aira', 'Ben', 'Cat'),
v_2 = c(23, 32, 27),
v_3 = c(90, 98, 95)
)
# Duplicate columns using mutate + across
df2 <- df %>% mutate(
across(
.cols = starts_with('v'),
.names = paste("x", toString(strtoi(strsplit({.col}, '_')[[1]][2]) + 12, sep="_"))
)
)
2条答案
按热度按时间ahy6op9u1#
您也可以按照计划使用
mutate(across())
,如下所示:disho6za2#
这适用于给定的示例,使用
dplyr::across()
:使用正则表达式提取字符串的结尾,这些字符串是一个或多个数字: