按日排序日期时间数据,但从下午4点到下午4点

时间:2018-03-27 16:47:39

标签: r finance quantitative-finance

我每天都有关于公司的不同时间的推文,我希望白天将它们分组。我已经这样做了。但是,我希望不是从00:00到23:59对它们进行排序,而是从16:00到15:59(因为纽约证券交易所开放时间)。

推文(负面,中性和正面是为了情绪):

 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-02 05:00:00+00:00,0,1,0,1
 AXP,2013-06-02 16:00:00+00:00,0,2,0,2

我的代码:

 Tweets$Datetime_UTC <- as.Date(Tweets$Datetime)
 Sent <- aggregate(list(Tweets$Negative, Tweets$Neutral, Tweets$Positive), by=list(Tweets$Company, Tweets$Datetime_UTC), sum)
 colnames(Sent) <- c("Company", "Date", "Negative", "Neutral", "Positive")
 Sent <- Sent[order(Sent$Company),]

该代码的输出:

 Company,Date,Negative,Neutral,Positive
 AXP,2013-06-01,0,4,0
 AXP,2013-06-02,0,3,0

我希望如何(考虑到一天应该从16:00开始):

 Company,Date,Negative,Neutral,Positive
 AXP,2013-06-02,0,5,0
 AXP,2013-06-03,0,2,0  

正如您所看到的,我的代码几乎可以正常工作。我只是想在不同时间窗口之后进行排序。

怎么做?一个想法是只为每个Datetime_UTC添加+ 8h,这将在16:00变为00:00。在此之后,我可以使用我的代码。那可能吗?

提前致谢!! : - )

1 个答案:

答案 0 :(得分:2)

有效的是,您正在重新定义一个日期,从16:00而不是00:00开始。一种选择是转换为纪元时间(自1970:01:01 00:00:00+00:00以来的秒数,只需将数据向前滑动八小时。

您可以转换为纪元秒,然后添加8小时的秒数,然后在一行中转换回Date类。然后你就像过去一样聚合。

Tweets$Datetime_UTC <- as.Date(as.integer(as.POSIXct(Tweets)) + 28800)

用你的代码替换你的第一行代码,它应该可以解决问题。