R:创建xts对象会更改时间格式

时间:2011-05-12 01:27:47

标签: r xts posixct

> str(s)
 POSIXct[1:6630], format: "2011-02-14 09:31:00" "2011-02-14 09:32:00" "2011-02-14 09:33:00" "2011-02-14 09:34:00" ...
> head(s)
[1] "2011-02-14 09:31:00 EST" "2011-02-14 09:32:00 EST" "2011-02-14 09:33:00 EST" "2011-02-14 09:34:00 EST"
[5] "2011-02-14 09:35:00 EST" "2011-02-14 09:36:00 EST"
> 


> head(AMKR)
  date_holding time_holding close
1   2011-02-14     09:31:00  7.66
2   2011-02-14     09:32:00  7.58
3   2011-02-14     09:33:00  7.54
4   2011-02-14     09:34:00  7.54
5   2011-02-14     09:35:00  7.56
6   2011-02-14     09:36:00  7.54

> as.xts(AMKR[,-1:-2], s) -> newAMKR
> head(newAMKR)
                    [,1]
2011-02-14 00:00:00 7.74
2011-02-14 00:01:00 7.74
2011-02-14 00:02:00 7.74
2011-02-14 00:03:00 7.74
2011-02-14 00:04:00 7.74
2011-02-14 00:05:00 7.73

正如您所看到的,时间已经改变。

自动收录器'AMKR'是从位于同一台机器上的mySQL数据库中提取的。

如果有人能指出我正确的方向,那将非常感激。

=============================================== =

更新:有几个问题。

1)将数据上传到mySQL时,时间格式设置为%h:%i:%s,应该设置为%H:%i:%s(注意大写 H )。

2)我删除了mySQL中的数据,并使用 H 重新上传。现在我得到的时间是12:00:00,因为报价发生在中午12点但是看起来像.xts将其解释为12am所以在12:00:00和04:00:00之间发生的所有报价都被解释为发生在 am

我想知道为什么mySQL没有将时间转换为24小时时钟格式,因为我在LOAD DATA查询中使用了%H 。我想知道是否有办法通过as.POSIXct强制改变R.调查.....

1 个答案:

答案 0 :(得分:1)

我弄明白了这个问题。我需要使用以下时间格式将数据上传到mySQL:'%h:%i:%s%p'。我之前遗漏了%p。此外,当您使用%p时,您需要使用小写%h。