处理动物园中的日期格式

时间:2017-09-28 09:59:19

标签: r

我有一个csv data file,格式如下 Stock prices over the period of Jan 1, 2015 to Sep 26, 2017

现在我使用以下代码将数据导入为zoo对象:

sensexzoo1<- read.zoo(file = "/home/bidyut/Downloads/SENSEX.csv", 
                           format="%d-%B-%Y",  header=T, sep=",")

它会产生以下错误:

  

read.zoo中的错误(file =“/ home / bidyut / Download / SENSEX.csv”,format =   “%d-%B-%Y”,:索引在数据行中有679个错误条目:1 2 3 4 5 6   7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30   31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53   54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76   77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99   100 ...

这有什么问题?请建议

1 个答案:

答案 0 :(得分:0)

问题是标题和数据之间不匹配。标题行有5个字段,文件的其余行有6个字段:

head(count.fields("SENSEX.csv", sep = ","))
## [1] 5 6 6 6 6 6

当发生这种情况时,它假定数据的第一个字段是行名称,因此默认情况下,下一个字段(实际上包含Open数据)被假定为时间索引。

我们可以通过以下几种方式解决这个问题:

1)解决此问题的最简单方法是在标题中添加一个名为Volume的字段,以便标题如下所示:

Date,Open,High,Low,Close,Volume

2)如果您有许多此格式的文件,以便修改它们,我们可以在没有标题的情况下读取数据,然后在第二遍中添加它们。 [, - -5]删除了NAs列,第二行的[-1]删除了Date标题。

z <- read.zoo("SENSEX.csv", format="%d-%B-%Y", sep = ",", skip = 1)[, -5]
names(z) <- unlist(read.table("SENSEX.csv", sep = ",", nrow = 1))[-1]

,并提供:

> head(z)
               Open     High      Low    Close
2015-01-01 27485.77 27545.61 27395.34 27507.54
2015-01-02 27521.28 27937.47 27519.26 27887.90
2015-01-05 27978.43 28064.49 27786.85 27842.32
2015-01-06 27694.23 27698.93 26937.06 26987.46
2015-01-07 26983.43 27051.60 26776.12 26908.82
2015-01-08 27178.77 27316.41 27101.94 27274.71

3)第三种方法是以文本形式读取文件,使用R追加&#34;,Volume&#34;到第一行,然后用read.zoo

阅读文本
Lines <- readLines("SENSEX.csv")
Lines[1] <- paste0(Lines[1], ",Volume")
z <- read.zoo(text = Lines, header = TRUE, sep = ",", format="%d-%B-%Y")

注意:下面显示了SENSEX.csv的前几行以使其自包含(不依赖于问题中可能在将来消失的链接):

Date,Open,High,Low,Close
1-January-2015,27485.77,27545.61,27395.34,27507.54,
2-January-2015,27521.28,27937.47,27519.26,27887.90,
5-January-2015,27978.43,28064.49,27786.85,27842.32,
6-January-2015,27694.23,27698.93,26937.06,26987.46,
7-January-2015,26983.43,27051.60,26776.12,26908.82,
8-January-2015,27178.77,27316.41,27101.94,27274.71,
9-January-2015,27404.19,27507.67,27119.63,27458.38,
12-January-2015,27523.86,27620.66,27323.74,27585.27,
13-January-2015,27611.56,27670.19,27324.58,27425.73,
14-January-2015,27432.14,27512.80,27203.25,27346.82,