问题描述
library(tidyverse)
df<-tibble(dates1 = c("2020-08-03T00:00:00.000Z","2020-08-03T00:00:00.000Z"),dates2 = c("2020-08-05T00:00:00.000Z","2020-08-05T00:00:00.000Z"))
我想将字符串从YMD-HMS转换为DMY-HMS。有人可以向我解释为什么这不起作用:
df %>%
mutate_at(vars(starts_with("dates")),as.Date,format="%d/%m/%Y %H:%M:%s")
为什么呢?
df %>% mutate(dates1 = format(as.Date(dates1),"%d/%m/%Y %H:%M:%s")) %>%
mutate(dates2 = format(as.Date(dates2),"%d/%m/%Y %H:%M:%s"))
最后,一旦日期格式化完成,是否可以将这些列指定为“ datetime”列(例如dttm)而不是chr
?
解决方法
您要传递的MyVertexComparer
参数用于format
,而您真正想要的是将其传递给as.Date
函数。您可以为此使用匿名函数或使用公式语法。
format
要将数据表示为日期或日期时间,R使用标准的library(dplyr)
df %>%
mutate(across(starts_with("dates"),~format(as.Date(.),"%d/%m/%Y %H:%M:%S")))
# A tibble: 2 x 2
# dates1 dates2
# <chr> <chr>
#1 03/08/2020 00:00:00 05/08/2020 00:00:00
#2 03/08/2020 00:00:00 05/08/2020 00:00:00
表示方式,可以使用Y-M-D H:M:S
更改表示方式,但输出将是上面的字符。
format