이종연*_*이종연 3 datetime timestamp r time-series quantmod
所以我得到了这个我想要转换成xts的数据,所以我可以用quantmod绘制它.(这是15米的图表)
> sample
Date Open High Low Close Vol.at.Price Volume
515 2016-06-15 pm 1:15:00 1.7381 1.7600 1.710 1.7399 1.7399 176000
516 2016-06-15 pm 1:30:00 1.7389 1.7400 1.725 1.7350 1.7350 152900
517 2016-06-15 pm 1:45:00 1.7350 1.7650 1.720 1.7550 1.7550 179900
518 2016-06-15 pm 2:00:00 1.7550 1.7600 1.740 1.7500 1.7500 130800
519 2016-06-15 pm 2:15:00 1.7550 1.7800 1.745 1.7800 1.7800 188400
520 2016-06-15 pm 2:30:00 1.7800 1.7899 1.730 1.7300 1.7300 256700
521 2016-06-15 pm 2:45:00 1.7300 1.7800 1.730 1.7664 1.7664 151900
522 2016-06-15 pm 3:00:00 1.7600 1.7700 1.740 1.7600 1.7600 74100
523 2016-06-15 pm 3:15:00 1.7501 1.8000 1.750 1.7850 1.7850 232300
524 2016-06-15 pm 3:30:00 1.7900 1.8200 1.760 1.7600 1.7600 183300
525 2016-06-15 pm 3:45:00 1.7600 1.7700 1.730 1.7400 1.7400 151600
526 2016-06-15 pm 4:00:00 1.7400 1.7599 1.650 1.7150 1.7150 443500
527 2016-06-15 pm 4:15:00 1.7100 1.7100 1.710 1.7100 1.7100 4628
528 2016-06-15 pm 6:30:00 1.7100 1.7100 1.710 1.7100 1.7100 2000
529 2016-06-15 pm 7:00:00 1.6900 1.6900 1.680 1.6900 1.6900 1050
530 2016-06-15 pm 8:00:00 1.6900 1.6900 1.690 1.6900 1.6900 100
> class(sample)
[1] "data.frame"
Run Code Online (Sandbox Code Playgroud)
起初,我认为使用xts函数可以完成这项工作,但后来我意识到它只是切断了分钟部分.
> sampled.after<-xts(sample[2:ncol(sample)],as.Date(sample$Date))
> sampled.after
Open High Low Close Vol.at.Price Volume
2016-06-15 1.7381 1.7600 1.710 1.7399 1.7399 176000
2016-06-15 1.7389 1.7400 1.725 1.7350 1.7350 152900
2016-06-15 1.7350 1.7650 1.720 1.7550 1.7550 179900
2016-06-15 1.7550 1.7600 1.740 1.7500 1.7500 130800
2016-06-15 1.7550 1.7800 1.745 1.7800 1.7800 188400
2016-06-15 1.7800 1.7899 1.730 1.7300 1.7300 256700
2016-06-15 1.7300 1.7800 1.730 1.7664 1.7664 151900
2016-06-15 1.7600 1.7700 1.740 1.7600 1.7600 74100
2016-06-15 1.7501 1.8000 1.750 1.7850 1.7850 232300
2016-06-15 1.7900 1.8200 1.760 1.7600 1.7600 183300
2016-06-15 1.7600 1.7700 1.730 1.7400 1.7400 151600
2016-06-15 1.7400 1.7599 1.650 1.7150 1.7150 443500
2016-06-15 1.7100 1.7100 1.710 1.7100 1.7100 4628
2016-06-15 1.7100 1.7100 1.710 1.7100 1.7100 2000
2016-06-15 1.6900 1.6900 1.680 1.6900 1.6900 1050
2016-06-15 1.6900 1.6900 1.690 1.6900 1.6900 100
Run Code Online (Sandbox Code Playgroud)
如何将其转换为时间序列,以便绘制蜡烛图?
as.Date只返回时间戳的日期部分.使用as.POSIXct,以保持完整的时间戳.此外,您需要提供一个format参数,以便as.POSIXct了解您的日期格式.如果没有format参数,它只会截断日期部分的时间戳.这里有一些例子:
as.Date 仅返回日期
as.Date("2016-06-15 pm 1:15:00")
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)[1] "2016-06-15"
as.POSIXct无format参数返回日期加上默认时区
as.POSIXct("2016-06-15 pm 1:15:00")
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)[1] "2016-06-15 PDT"
添加正确format以as.POSIXct获取完整时间戳
as.POSIXct("2016-06-15 pm 1:15:00", format="%Y-%m-%d %p %I:%M:%S")
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)[1] "2016-06-15 13:15:00 PDT"
有关strptime如何解释上述format参数的详细信息,请参阅帮助.
添加正确format和tz以as.POSIXct获得完整的时间戳和正确的时区
请注意,as.POSIXct还将我的本地时区添加到结果(PDT).因此,您可能还应添加时区参数以确保应用正确的时区(特别是如果您在不同时区的交换中有引号).例如:
as.POSIXct("2016-06-15 pm 1:15:00", format="%Y-%m-%d %p %I:%M:%S", tz="America/New_York")
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)[1] "2016-06-15 13:15:00 EDT"
| 归档时间: |
|
| 查看次数: |
84 次 |
| 最近记录: |