微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

更改多个日期列并设置其格式

如何解决更改多个日期列并设置其格式

我有一个tibble,其中包含一些格式为字符串的日期列:

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。