通过添加+ 8h来操作数据框中的日期

时间:2018-03-28 16:15:42

标签: r dataframe finance quantitative-finance

我有一个数据框列,其日期格式为%Y-%m-%d %H:%M:%S。我想要做的是为每个日期添加+ 8h,然后将格式更改为%Y-%m-%d,以便16:00或之后的所有内容都会显示第二天。以下是我的数据框的摘录:

鸣叫:

 Company,Datetime_UTC,Negative,Neutral,Positive,Volume
 AXP,2013-06-01 16:00:00+00:00,0,2,0,2
 AXP,2013-06-01 17:00:00+00:00,0,2,0,2
 AXP,2013-06-01 22:00:00+00:00,0,1,0,1
 AXP,2013-06-02 05:00:00+00:00,0,1,0,1

我的代码:

 Tweets$Datetime_UTC <- as.POSIXct(Tweets$Datetime_UTC, format='%Y-%m-%d %H:%M:%S')
 Tweets$Datetime_UTC <- as.integer(Tweets$Datetime_UTC)
 Tweets$Datetime_UTC <- (Tweets$Datetime_UTC + 28800) / 86400
 Tweets$Datetime_UTC <- as.Date(Tweets$Datetime_UTC, origin="1970-01-01")

正如您所看到的,我首先将日期更改为POSIXct,然后更改为整数,以便可以对其进行操作。之后,我添加28800(8h = 28800sec)并将其除以86400(24h = 86400sec)。然后,我把它改回日期。

期望的结果:

 Company,Datetime_UTC,Negative,Neutral,Positive,Volume
 AXP,2013-06-02,0,2,0,2
 AXP,2013-06-02,0,2,0,2
 AXP,2013-06-02,0,1,0,1
 AXP,2013-06-02,0,1,0,1

实际结果:

 Company,Datetime_UTC,Negative,Neutral,Positive,Volume
 AXP,2013-06-01,0,2,0,2
 AXP,2013-06-01,0,2,0,2
 AXP,2013-06-02,0,1,0,1
 AXP,2013-06-02,0,1,0,1

不知何故,前两行的日期错误,而第3行则正确地更改为2013-06-02。我可以改进哪些方法使其在每一行都能正常工作?

提前致谢!! : - )

2 个答案:

答案 0 :(得分:2)

我不相信你需要经历整个过程,这会像下面的工作一样简单吗?注意我已经完成了files.h

Tweets$Datetime_UTC <- as.POSIXct(Tweets$Datetime_UTC, format='%Y-%m-%d %H:%M:%S')

答案 1 :(得分:2)

您可以使用包lubridate并执行:

library(lubridate)    
z$Datetime_UTC = as.Date(as.POSIXct( z$Datetime_UTC) + hm("8:00") )


> z$Datetime_UTC
[1] "2013-06-02" "2013-06-02" "2013-06-02" "2013-06-02"

其中z是您的数据框。