我正在使用R tidyverse并try 解析列名中一些字符之后的第一组数字.我想保留字符和第二组数字,但删除第一组数字.例如,在下面的df中,我们有"var1_1975"和"var1_1976".转换后,这些变量应该命名为"var_75"和"var_76". 我正在try 这样做:
library(tidyverse)
df <- data.frame("var1_1975" = c(1:5),
"var1_1976" = c(3,2,1,1,1),
"age" = c(25,41,39,60,36) ,
"satisfaction" = c(5,3,2,5,4)
)
# Output
# var1_1975 var1_1976 age satisfaction
# 1 1 3 25 5
# 2 2 2 41 3
# 3 3 1 39 2
# 4 4 1 60 5
# 5 5 1 36 4
cols <- df%>%
select(c(1:2)) %>% #select some cols by index
names() #retain only the col names
df <- df %>%
rename_with(.fn = ~ gsub("\\d+", "", .x, fixed = F),
.cols=contains("var") & ( contains("1975") | contains("1976") ) ) %>%
rename_with( .fn = function(.x){paste0(.x, "_",
parse_number(gsub("var1_","",cols)) -1900)},
.cols=(contains("var") )) #add year as suffix