R-通过添加 8H来操纵数据框中的日期



i有一个数据框列,该列的格式 %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 = 28800秒(,然后将其除以86400(24H = 86400秒(。然后,我将其更改为日期。

所需的结果:

 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

以某种方式,前两个行的日期错误,而第三行正确更改为2013-06-02。我可以改进什么,以便每行都能正常工作?

预先感谢!: - (

我不相信您需要完成整个过程,这会像以下工作一样简单吗?请注意,我已经做了Tweets$Datetime_UTC <- as.POSIXct(Tweets$Datetime_UTC, format='%Y-%m-%d %H:%M:%S')

Tweets$Datetime_UTC <- as.Date(Tweets$Datetime_UTC + 28800)
Tweets
#Company Datetime_UTC Negative Neutral Positive Volume
#1     AXP   2013-06-02        0       2        0      2
#2     AXP   2013-06-02        0       2        0      2
#3     AXP   2013-06-02        0       1        0      1
#4     AXP   2013-06-02        0       1        0      1

您可以使用软件包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是您的数据框架。

最新更新