我有一个名为“ Tickets”的数据集,其中有一个名为“创建日期”的列。我想分隔日期和时间,并形成一个称为“日期和时间”的新列(这意味着我要变异)。
我尝试使用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
)但是显示日期和时间错误
此代码有什么问题?
答案 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