【问题标题】:How to separate date and time from datetime format using R如何使用 R 将日期和时间与日期时间格式分开
【发布时间】:2018-11-24 04:36:09
【问题描述】:

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

.

我尝试使用 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) 但是它显示错误的日期和时间

这段代码有什么问题?

【问题讨论】:

标签: r


【解决方案1】:

试试这个。我只以三个日期为例。首先,我们将您的字符类更改为日期时间,然后提取日期,最后提取时间。我假设您希望日期为上课日期,时间为上课时间。如果没有,其他解决方案会更容易。另请注意,为了便于使用,我在时间上增加了几秒钟。

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

【讨论】:

    【解决方案2】:

    从你的问题我可以看出:

    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(),日期可以存储为字符串或整数,并且看起来相同。

    【讨论】:

    • 感谢您的回复。它显示错误。 “FUN 中的错误(左,右):比较 (1) 仅适用于原子类型和列表类型”
    • 我终于能够使用下面的代码将它们分开
    猜你喜欢
    • 2011-10-20
    • 2017-11-29
    • 2014-08-16
    • 1970-01-01
    • 1970-01-01
    • 2019-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多