如何从datetime创建日期(使用lubridate)?

pal*_*czy 5 r posixct lubridate

假设我创建了一个包含日期和时间的变量:

a <- ymd_hms("2014-01-01 12:23:34")
Run Code Online (Sandbox Code Playgroud)

如何创建仅具有日期的另一个变量?也就是说,我应该怎么做才能改变a的价值是相同b的值,其中b

b <- ymd("2014-01-01")
Run Code Online (Sandbox Code Playgroud)

cde*_*man 10

你可以使用 round_date

round_date(a, "day")
[1] "2014-01-02 UTC"
Run Code Online (Sandbox Code Playgroud)

编辑

你需要小心时间四舍五入.为了完全等效,您需要使用floor_date.

identical(ymd("2014-01-01"), floor_date(a, "day"))
[1] TRUE
Run Code Online (Sandbox Code Playgroud)

  • 为什么他需要所有这些并发症?为什么不只是`as.Date(a)`?`lubridate`大概是为了更容易处理日期而不是过度复杂化. (4认同)
  • @slhck 这是因为 Hadley 用可爱的名字重命名了所有 R 函数,然后 RStudio 大力推广 tidyverse,现在所有新的 R 用户都认为这是标准,其他一切都令人困惑。我觉得使用基础 R 和单个包更有效率,例如 data.table(有时根据我的需要还有其他包)而不是捆绑在一起的大量包(即 tidyverse),它们都具有您需要的无数不同功能记住和不断重命名/弃用,缓慢,屏蔽来自不同包的功能,不稳定等。 (4认同)

Nak*_*akx 8

使用时间date()要短得多,并且避免了任何舍入问题。

library(lubridate)
date(a)
[1] "2014-01-01"
Run Code Online (Sandbox Code Playgroud)