如何使用R将日期和时间与日期时间格式分开

时间:2018-11-24 04:36:10

标签: r

我有一个名为“ Tickets”的数据集,其中有一个名为“创建日期”的列。我想分隔日期和时间,并形成一个称为“日期和时间”的新列(这意味着我要变异)。

enter image description here

我尝试使用lubridate,但是它给了我NA值。

我也使用过:

Hours <- format(as.POSIXct(strptime(tickets$`Date Created`,"%m/%d/%Y %H:%M",tz="")) ,format = "%H:%M")
Hours

但是,如果我尝试查看数据集,则不会显示任何名为Hours的列。任何人都可以告诉我是什么问题。

非常感谢您。

编辑:我终于可以使用下面的代码将它们分开 门票%>%     mutate_at(vars(Date Created),mdy_hms)%>%   mutate_at(vars(Date Created),funs(“ date” = date(。),“ time” = as.hms(。)))%>%   select(-Date Created)但是显示日期和时间错误enter image description here

此代码有什么问题?

2 个答案:

答案 0 :(得分:0)

根据您的问题我能说出的话:

library(tidyverse)
head(df)
testTime
1 2018-11-24 02:44:07
new_df <- separate(data = df, col = testTime, into  = c('Date', 'Time'), sep = ' ')
head(new_df)
  Date     Time
1 2018-11-24 02:44:07

应该带你到那里。

考虑改写您问题的最后一部分,我不明白您在问什么。另外,在列中使用typeof(),日期可以存储为字符串或整数,并且外观相同。

答案 1 :(得分:0)

尝试一下。我仅以三个日期为例。首先,将您的角色类更改为日期时间,然后提取日期,最后提取时间。我假设您想将日期作为上课日期,将时间作为上课时间。如果没有,其他解决方案将更容易。另请注意,为了方便使用,我在时间上增加了几秒钟。

library(tidyverse)
library(lubridate)

df <- data_frame(date_time = c("8/1/2018 4:55", "8/1/2018 7:53", "8/1/2018 10:10"))
df %>%
  mutate(date_time = paste0(date_time, ":00"),
         date_time = parse_date_time(date_time, orders = "mdy HMS"),
         date = date(date_time), 
         time = chron::times(strftime(date_time,"%H:%M:%S", tz = "UTC")))
#> # A tibble: 3 x 3
#>   date_time           date       time       
#>   <dttm>              <date>     <S3: times>
#> 1 2018-08-01 04:55:00 2018-08-01 04:55:00   
#> 2 2018-08-01 07:53:00 2018-08-01 07:53:00   
#> 3 2018-08-01 10:10:00 2018-08-01 10:10:00