在R中处理数字(十进制)日期? [英] Dealing with numeric (decimal) dates in R?

查看:210
本文介绍了在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆