2

我一直在尝试获取有关如何使用本地文件创建烛图的信息,但其中大多数都引用了 yahoo 和 google 文件。

我有一个 CSV 文件

i<-"A"
library(quantmod)
A<-read.csv("D:\\DATA.csv",header=T)
        A$Close<-as.numeric(A$Close)
        A$High<-as.numeric(A$High)
        A$Low<-as.numeric(A$Low)
        A$Open<-as.numeric(A$Open)
        A$Volume<-as.numeric(A$Volume)

        #Select appropriate dataset
        A<-A[which(A$CODE==i),]
        A<-A[,(5:10)]
        A$DATE<-as.Date(A$DATE,"%Y/%d/%Y")
        A<-xts(A,order.by=as.POSIXct(A$DATE))
        A<-A[,(1:5)]

我原来的数据集如下:

head(A)
      CODE NAME YR2 YR2 Low High Close Open  Volume  DATE
49620   A A 10.25     21 112  120   116      101,500 9/11/2006
49621   A A 10.25     21 112  120   118  116 790,700 9/12/2006
49622   A A 10.25     21 117  124   119  118 445,300 9/13/2006
49623   A A 10.25     21 119  127   123  119 120,200 9/14/2006
49624   A A 10.25     21 120  127   124  123 448,700 9/15/2006
49625   A A 10.25     21 120  130   128  124 494,600 9/18/2006
 ##NOTE THAT THE FIRST COLUMNS DOES NOT HAVE A NAME(IT IS THE OBS NO.)

运行上述命令后,数据集如下所示。

head(A)
                    Low    High   Close  Open   Volume
2006-12-01 03:00:00 " 206" " 231" " 228" " 232" "1159"
2006-12-01 03:00:00 " 204" " 230" " 206" " 229" "5711"
2006-12-02 03:00:00 " 259" " 261" " 259" " 260" "1072"
2006-12-02 03:00:00 " 200" " 229" " 207" " 229" "1505"
2006-12-03 03:00:00 " 262" " 264" " 262" " 260" "5416"
2006-12-03 03:00:00 " 204" " 227" " 206" " 208" " 676"

然后我创建了将 colnames 修改为所需的格式我的数据集在所有修改后如下所示。

                    A.Low A.High A.Close A.Open A.Volume
2006-12-01 03:00:00 " 206" " 231"  " 228"   " 232"  "1159"
2006-12-01 03:00:00 " 204" " 230"  " 206"   " 229"  "5711"
2006-12-02 03:00:00 " 259" " 261"  " 259"   " 260"  "1072"
2006-12-02 03:00:00 " 200" " 229"  " 207"   " 229"  "1505"
2006-12-03 03:00:00 " 262" " 264"  " 262"   " 260"  "5416"
2006-12-03 03:00:00 " 204" " 227"  " 206"   " 208"  " 676"

我被困在这里,因为当我保存它时,数据集会完全改变,以至于当我尝试阅读它时,我得到:

   Index.A.Low.A.High.A.Close.A.Open.A.Volume
1    2006-12-01 03:00:00  206  231  228  232 1159
2    2006-12-01 03:00:00  204  230  206  229 5711
3    2006-12-02 03:00:00  259  261  259  260 1072
4    2006-12-02 03:00:00  200  229  207  229 1505
5    2006-12-03 03:00:00  262  264  262  260 5416
6    2006-12-03 03:00:00  204  227  206  208  676

我的问题是:

  1. 日期不是数据集中的原始日期
  2. 我无法得到我需要做的事情(绘制烛图)
4

1 回答 1

0

我同意 SlowLearner 的观点,即需要一个更可重现的例子。
不过有几点观察:

  1. 您可以使用 order.by = as.Date 本身转换为 xts。
  2. 检查 as.Date 中的格式。如果您的数据是 mm/dd/yyyy(从问题中的数据看来,那么命令应该有 format='%m/%d/%Y' 而不是 '%Y/%d/%Y'。

另外,请确保您的数据是逗号分隔的,而不是制表符分隔的(让我失望了很多次)。

于 2013-01-10T10:56:07.507 回答