在R中处理数字(十进制)日期? [英] Dealing with numeric (decimal) dates in R?
问题描述
我有一些来自Excel的数字日期数据:
> df< - data.frame(c(42613,42612,42614),c(42614.61,42613.97,42612.12))
> name(df)< - c(Closetime,Opentime)
$ c> Closetime 和 Opentime
是 numeric
。我想保留 OpenTime
中的小时/分/秒数据,并将时间'00:00:00'添加到 Closetime
:
> df $ Closetime< - paste(as.Date(df $ Closetime,origin ='1900-01-01'),c('00:00:00'))
/ pre>
容易做到
Closetime
,但是当我尝试使用lubridate :: c $ c $ on $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ c>> df $ Opentime< - date_decimal(df $ Opentime)
> df
闭馆时间通知
1 2016-09-02 00:00:00 42614-08-11 15:36:00
2 2016-09-01 00:00:00 42613-12 -21 01:12:00
3 2016-09-03 00:00:00 42612-02-13 22:04:48
如何同时获得 Opentime
和 Closetime
类型/格式?我最终希望能够在几个小时之间,在每列之间得到差异,供参考。
如果你可以使用POSIXct,你可以使用例如
df $ Opentime< - as.POSIXct(df $ Opentime * 24 * 60 * 60,
origin =1900-01-01,
tz =UTC)
推理:POSIXct只是从原点开始的秒数
I have some numeric date data from Excel:
> df <- data.frame(c(42613, 42612, 42614), c(42614.61, 42613.97, 42612.12))
> names(df) <- c("Closetime", "Opentime")
Both Closetime
and Opentime
are numeric
. I want to preserve the hour/minute/second data from OpenTime
and add the time '00:00:00' to every date in Closetime
:
> df$Closetime <- paste(as.Date(df$Closetime, origin = '1900-01-01'), c('00:00:00'))
Easy enough to do Closetime
, but when I try using lubridate::date_decimal
on Opentime
, everything goes to hell.
> df$Opentime <- date_decimal(df$Opentime)
> df
Closetime Opentime
1 2016-09-02 00:00:00 42614-08-11 15:36:00
2 2016-09-01 00:00:00 42613-12-21 01:12:00
3 2016-09-03 00:00:00 42612-02-13 22:04:48
How can I get both Opentime
and Closetime
to be of the same type/format? I am eventually looking to be able to get the difference, in hours, between the times in each column, for reference.
If you can use POSIXct, you can do for example
df$Opentime <- as.POSIXct( df$Opentime*24*60*60,
origin="1900-01-01",
tz="UTC")
Reasoning: POSIXct is just number of seconds since origin
这篇关于在R中处理数字(十进制)日期?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!