我的日期/时间列格式不一致:
df <- data.frame(date.time=c("10-29-2022 09:46:40", "02-27-2023 22:53:53", "12-15-2022 02:54:03", "01-09-2023 14:44", "03-05-2023 14:58", "02-18-2023 19:46:35", "12-10-2022 16:50"))
我想将“:00”添加到不包含秒的时间戳中(请注意某些字符串比其他字符串短)。我可以使用 gsubs(pattern=) 快速找到字符串,但是当我尝试在末尾添加“:00”时,我将替换整个字符串:
df %>%
mutate_at(.vars = "date.time",
.funs = gsub,
pattern = "^\\d\\d-\\d\\d-\\d\\d\\d\\d \\d\\d:\\d\\d$",
replacement = "\\d\\d-\\d\\d-\\d\\d\\d\\d \\d\\d:\\d\\d:00")
在这种情况下,您可以使用简单的
ifelse
和 paste0
,无需正则表达式:
df$date.time_new <- ifelse(nchar(df$date.time) < 19,
paste0(df$date.time, ":00"),
df$date.time)
输出:
date.time date.time_new
1 10-29-2022 09:46:40 10-29-2022 09:46:40
2 02-27-2023 22:53:53 02-27-2023 22:53:53
3 12-15-2022 02:54:03 12-15-2022 02:54:03
4 01-09-2023 14:44 01-09-2023 14:44:00
5 03-05-2023 14:58 03-05-2023 14:58:00
6 02-18-2023 19:46:35 02-18-2023 19:46:35
7 12-10-2022 16:50 12-10-2022 16:50:00