如何用lubridate将ymd格式日期转换为dmy格式?
问题:Lubridate是否有专属方法将日期转为日-月-年格式?
你现有一个包含date列的数据集,已通过lubridate的ymd()函数将数字格式的日期转为标准日期类型,现在希望把日期转为日-月-年格式,目前使用format()函数实现,想知道是否有lubridate专属的实现方式。
你的原始代码如下:
1. 创建数据集并转换为标准日期格式
library(dplyr) library(lubridate) df <- data.frame( nr = c(1, 2), date = c(20170131, 20081028) ) df2 <- df %>% mutate(date = ymd(date))
2. 当前使用的format()格式化方法
df3 <- df2 %>% mutate(date = format(date, "%d/%m/%Y"))
回答
lubridate的核心定位是日期时间的解析、运算和字段提取,并没有专门用于直接输出日-月-年格式的专属函数。
你可以尝试结合lubridate的日期提取函数(day()、month()、year())来自定义拼接格式,但这种方式需要额外处理补零逻辑,反而比format()更繁琐:
library(stringr) df3 <- df2 %>% mutate(date = str_c( str_pad(day(date), 2, pad = "0"), str_pad(month(date), 2, pad = "0"), year(date), sep = "/" ))
实际上,format()是R中处理日期格式化的标准工具,和lubridate的日期对象完全兼容,使用它是最简洁高效的方案,不需要刻意追求lubridate专属实现。
内容的提问来源于stack exchange,提问作者Nina van Bruggen
相关产品推荐
相关产品推荐

