我每天都有关于公司的不同时间的推文,我希望白天将它们分组。我已经这样做了。但是,我希望不是从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。在此之后,我可以使用我的代码。那可能吗?
提前致谢!! : - )
答案 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)
用你的代码替换你的第一行代码,它应该可以解决问题。