繁体   English   中英

r 重命名列名以包含 0

[英]r rename column names to include 0s

这是我的数据集

Id   Date        Col_a_1 Col_a_2 Col_a_3 Col_a_12 Col_a_65
1    02/19/2020  0        1       2       0        4
2    02/10/2020  1        2       0       1        3
1    03/11/2020  2        1       3       1        0
4    10/29/2020  1        0       2       1        0

我喜欢在那些以 1,2,3 结尾的列名中添加 0

最终预期的数据集是具有这些列名的数据集

Id   Date        col_b_01  col_b_02 col_b_03 col_b_12 col_a_65
1    02/19/2020  0         1        2        0        4
2    02/10/2020  1         2        0        1        3
1    03/11/2020  2         1        3        1        0
4    10/29/2020  1         0        2        1        0

虽然我可以单独重命名它们,但我喜欢更有效地这样做,但不确定如何。 非常感谢任何建议。 提前致谢。

您可以在rename_with中使用str_replace -

library(dplyr)
library(stringr)

df %>%
  rename_with(~str_replace(., '\\d+', function(m) sprintf('%02s', m)), 
              starts_with('Col'))

#  Id       Date Col_a_01 Col_a_02 Col_a_03 Col_a_12 Col_a_65
#1  1 02/19/2020        0        1        2        0        4
#2  2 02/10/2020        1        2        0        1        3
#3  1 03/11/2020        2        1        3        1        0
#4  4 10/29/2020        1        0        2        1        0

数据

df <- structure(list(Id = c(1L, 2L, 1L, 4L), Date = c("02/19/2020", 
"02/10/2020", "03/11/2020", "10/29/2020"), Col_a_1 = c(0L, 1L, 
2L, 1L), Col_a_2 = c(1L, 2L, 1L, 0L), Col_a_3 = c(2L, 0L, 3L, 
2L), Col_a_12 = c(0L, 1L, 1L, 1L), Col_a_65 = c(4L, 3L, 0L, 0L
)), class = "data.frame", row.names = c(NA, -4L))
names(dat)[3:7] # [1] "Col_a_1" "Col_a_2" "Col_a_3" "Col_a_12" "Col_a_65" gsub("_([0-9])$", "_0\\1", names(dat)[3:7]) # [1] "Col_a_01" "Col_a_02" "Col_a_03" "Col_a_12" "Col_a_65" names(dat)[3:7] <- gsub("_([0-9])$", "_0\\1", names(dat)[3:7]) dat # Id Date Col_a_01 Col_a_02 Col_a_03 Col_a_12 Col_a_65 # 1 1 02/19/2020 0 1 2 0 4 # 2 2 02/10/2020 1 2 0 1 3 # 3 1 03/11/2020 2 1 3 1 0 # 4 4 10/29/2020 1 0 2 1 0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM