【发布时间】:2011-05-12 01:27:47
【问题描述】:
> 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 将其解释为上午 12 点,因此在 12:00:00 和 04:00:00 之间发生的所有报价都被解释为发生在上午。
我想知道为什么 mySQL 没有像我在 LOAD DATA 查询中使用 %H 那样将时间转换为 24 小时制格式。我想知道是否有办法通过 as.POSIXct 强制更改 R。调查中……
【问题讨论】:
-
您没有提供足够的信息来准确回答问题。请提供一个可重现的例子。
-
我无法重现此行为。您是否注意到 newAMKR 的值不是 AMKR 中的值?我相信您的会话中有些东西不是您认为的那样。
-
感谢 Joris 指出这一点。这让我发现时间格式是问题的根源。我目前正在调查。感谢您的帮助。
-
我发现了问题所在。我需要使用以下时间格式将数据上传到 mySQL:'%h:%i:%s %p'。我之前省略了 %p。此外,当您使用 %p 时,您需要使用小写 %h。
-
你应该把它作为答案发布并接受它。