提问人:Damien Dotta 提问时间:11/16/2023 更新时间:11/16/2023 访问量:38
如何使用格式日期重命名多个列名称?
How to rename multiple columns names with format date?
问:
我想创建一个 rename_col_df() 函数来重命名 data.frame 中的所有列,除了第一个列 (CODE_S)。
下面是重现该问题的示例:
df <- data.frame(
CODE_S = c(1, 2, 3),
COL2 = c(10, 20, 30),
COL3 = c(15, 25, 35)
)
colnames(df) <- c("CODE_S", "01/10/2023", "01/11/2023")
在此示例中,我只有 2 个日期列,但在实际用例中,我有几十个日期列。
预期结果:名为“CODE_S”、“2023-10-01”、“2023-11-01”的列。
我正在考虑使用这样的东西,但我无法将其放入函数中:
names(df) <- c("CODE_S",format(as.Date("01/11/2023", format = "%d/%m/%Y"), "%Y-%m-%d"))
答:
1赞
Julian
11/16/2023
#1
使用您的想法的一种方式和:rename_with
library(dplyr)
df |>
rename_with(~format(as.Date(., format = "%d/%m/%Y"), "%Y-%m-%d"), -"CODE_S")
输出
CODE_S 2023-10-01 2023-11-01
1 1 10 15
2 2 20 25
3 3 30 35
1赞
user2974951
11/16/2023
#2
尝试
> colnames(df)[-1]=as.character(as.Date(colnames(df)[-1],format="%d/%m/%Y"))
CODE_S 2023-10-01 2023-11-01
1 1 10 15
2 2 20 25
3 3 30 35
列名不能是日期。
1赞
zx8754
11/16/2023
#3
使用 gsub:
colnames(df) <- gsub("/", "-", colnames(df), fixed = TRUE)
或者 make.names 具有有效的名称:
colnames(df) <- make.names(colnames(df))
评论
gsub("/", "-", c("CODE_S", "01/10/2023", "01/11/2023"), fixed = TRUE)
make.names
colnames(df)[-1] <- gsub("/", "-", colnames(df)[-1L])