【发布时间】:2015-02-25 20:58:23
【问题描述】:
假设我创建了一个包含日期和时间的变量:
a <- ymd_hms("2014-01-01 12:23:34")
如何创建另一个只有日期的变量?也就是说,我应该怎么做才能将a 的值转换为与b 的值相同,其中b 是
b <- ymd("2014-01-01")
【问题讨论】:
假设我创建了一个包含日期和时间的变量:
a <- ymd_hms("2014-01-01 12:23:34")
如何创建另一个只有日期的变量?也就是说,我应该怎么做才能将a 的值转换为与b 的值相同,其中b 是
b <- ymd("2014-01-01")
【问题讨论】:
你可以使用round_date
round_date(a, "day")
[1] "2014-01-02 UTC"
编辑
不过,您确实需要小心舍入时间。为了完全等价,您需要使用floor_date。
identical(ymd("2014-01-01"), floor_date(a, "day"))
[1] TRUE
【讨论】:
as.Date(a)? lubridate 的设计可能是为了更容易处理日期,而不是让它过于复杂。
floor_date,但如果是as.Date 或as.date,我必须查一下(点和大写字母是什么意思?)。而且无论它返回什么都可能与我已经在做的不兼容。在 R 中,总感觉有十几种方法可以实现一件事。坚持使用 lubridate(或更一般地说,tidyverse)的功能极大地帮助我提高工作效率。
使用date() 更短,并且避免了任何舍入问题。
library(lubridate)
date(a)
[1] "2014-01-01"
【讨论】: