将字符附加到与表达式 R 匹配的列中的字符串

问题描述 投票:0回答:1

我的日期/时间列格式不一致:


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")
r regex gsub
1个回答
0
投票

在这种情况下,您可以使用简单的

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
© www.soinside.com 2019 - 2024. All rights reserved.