R:转换因子到日期时间也显示时间

时间:2018-01-20 19:59:40

标签: r datetime posixct

我在数据框DATE中有一个因子列a,显示如下所示的日期:

01/01/2012 00

显示日,月,年和小时。

在stackoverflow上,我发现这种方式可以从因子转换为日期时间:

a$DATE <- as.POSIXct(as.character(a$DATE), format = "%d/%m/%Y %H")

但是,当我尝试按View(a)检查数据时,我只能看到没有小时的日期。所有日期都显示如下:

2012-01-01

我还尝试通过在csv中保存数据帧并通过Rstudio按钮“导入数据集”再次导入来指定日期时间。当我通过单击DATE列的标题指定类型时,我得到相同的错误:小时不显示。

我使用的方法是否正确? 如果是,我怎么能显示小时? 如果无法显示小时,我如何从POSIXct类型中获取小时?

1 个答案:

答案 0 :(得分:0)

我似乎无法重现您的问题,您是否可以提供a complete minimal reproducible example来解决问题?

这就是我得到的。

times <- c("01/01/2012 00", "30/11/2013 11", "17/03/2014 23")
times_factor <- as.factor(times)
times_factor
#> [1] 01/01/2012 00 30/11/2013 11 17/03/2014 23
#> Levels: 01/01/2012 00 17/03/2014 23 30/11/2013 11

foo <- as.POSIXct(times_factor, format = "%d/%m/%Y %H")
foo
#> [1] "2012-01-01 00:00:00 CET" "2013-11-30 11:00:00 CET" "2014-03-17 23:00:00 CET"

bar <- format(foo,"%d/%m/%Y %H")
bar
#> [1] "01/01/2012 00" "30/11/2013 11" "17/03/2014 23"

# install.packages(c("tidyverse"), dependencies = TRUE)
library(lubridate)
dmy_h(times_factor, quiet = T, tz = "CET")
#> [1] "2012-01-01 00:00:00 CET" "2013-11-30 11:00:00 CET" "2014-03-17 23:00:00 CET"