按天对日期时间数据进行排序,但从下午 4 点到下午 4 点
Sort Datetime data by day, but from 4PM to 4PM
我每天都有不同时间发布的有关公司的推文,我想按天对它们进行分组。我已经这样做了。但是,我不想从 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
如您所见,我的代码几乎可以正常工作。我只想在不同时间后排序 windows.
如何做到这一点?一个想法是只向每个 Datetime_UTC
添加 +8h,这会将 16:00 更改为 00:00。在此之后,我就可以使用我的代码了。可以吗?
提前致谢!! :-)
实际上,您所做的是重新定义从 16:00 而不是 00:00 开始的日期。一种选择是转换为纪元时间(自 1970:01:01 00:00:00+00:00
以来的秒数,然后简单地将数据向前滑动八小时。
您可以转换为纪元秒,然后加上 8 小时的秒数,然后在一行中转换回 Date
class。然后你就会像以前一样聚合。
Tweets$Datetime_UTC <- as.Date(as.integer(as.POSIXct(Tweets)) + 28800)
用它替换你的第一行代码,它应该可以解决问题。
我每天都有不同时间发布的有关公司的推文,我想按天对它们进行分组。我已经这样做了。但是,我不想从 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
如您所见,我的代码几乎可以正常工作。我只想在不同时间后排序 windows.
如何做到这一点?一个想法是只向每个 Datetime_UTC
添加 +8h,这会将 16:00 更改为 00:00。在此之后,我就可以使用我的代码了。可以吗?
提前致谢!! :-)
实际上,您所做的是重新定义从 16:00 而不是 00:00 开始的日期。一种选择是转换为纪元时间(自 1970:01:01 00:00:00+00:00
以来的秒数,然后简单地将数据向前滑动八小时。
您可以转换为纪元秒,然后加上 8 小时的秒数,然后在一行中转换回 Date
class。然后你就会像以前一样聚合。
Tweets$Datetime_UTC <- as.Date(as.integer(as.POSIXct(Tweets)) + 28800)
用它替换你的第一行代码,它应该可以解决问题。