从R中的datetime字段提取日期和时间

从R中的datetime字段提取日期和时间,r,lubridate,R,Lubridate,我有一个像这样的日期集,读取日期是POSIXct格式的。我想在R中的一个字段中提取日期,在另一个字段中提取时间。我尽量避免使用base R,所以如果你能做到这一点,那就太好了(lubridate)。我希望新提取的字段采用正确的格式,因为我的最终目标是将时间(x)与售出的商品总数(y)进行对比,以确定一天中哪一天的销售额最高。谢谢你的帮助 如果我理解得很好,R可以在导入数据时正确读取日期和时间(因为它们是POSIXct格式),但您无法从日期时间列中提取正确格式的日期和时间 考虑到R中有一个data

我有一个像这样的日期集,读取日期是POSIXct格式的。我想在R中的一个字段中提取日期,在另一个字段中提取时间。我尽量避免使用base R,所以如果你能做到这一点,那就太好了(lubridate)。我希望新提取的字段采用正确的格式,因为我的最终目标是将时间(x)与售出的商品总数(y)进行对比,以确定一天中哪一天的销售额最高。谢谢你的帮助


如果我理解得很好,R可以在导入数据时正确读取日期和时间(因为它们是POSIXct格式),但您无法从日期时间列中提取正确格式的日期和时间

考虑到R中有一个data.frame,如下所示:

            date_time Sold
1 2020-01-01 03:16:01    2
2 2020-01-02 02:15:12    2
3 2020-01-03 08:26:11    3
4 2020-01-04 09:29:14    2
5 2020-01-05 12:06:06    1
6 2020-01-06 08:08:11    3
Lubridate不提供提取时间组件的函数,因此必须使用minute()、hour()和second()函数逐段提取时间组件。然后可以使用paste()函数连接这些组件。现在,对于日期,您可以使用date()函数进行提取,然后使用format()函数按照您想要的方式对这些日期进行格式化

library(lubridate)
library(dplyr)
library(magrittr)

tab <- tab %>% 
  mutate(
    date = as.Date(date_time),
    hour = hour(date_time),
    minute = minute(date_time),
    second = second(date_time)
  ) %>% 
  mutate(
    format_date = format(date, "%m/%d/%Y"),
    format_hour = paste(hour, minute, second, sep = ":")
  )

基本R只是R。没有基本R,你不能在R中做任何事情。你能澄清你的意思吗?你是说你想要一个使用lubridate的答案吗?如果可能的话,我的答案用lubridate会很好。这就是我的意思,因为我和tidyverse一起工作。然而,任何事情都是值得赞赏的。谢谢你读了吗?对于日期部分,您可以使用
?as.date
@markus。是的。它更改了“我的阅读日期”字段,在原始阅读日期的基础上增加了天,在某些情况下还增加了小时。@Omomaxi请在问题结束时分享
dput(head(your_data,10))
的输出以及您的代码尝试。这将使其他人更容易帮助你。
tab %>% select(format_date, format_hour) %>% head()

  format_date format_hour
1  01/01/2020     12:4:23
2  01/02/2020     3:19:13
3  01/03/2020      8:6:24
4  01/04/2020      6:28:2
5  01/05/2020     2:16:20
6  01/06/2020     12:8:28