从CSV创建xts对象

时间:2016-12-19 08:38:20

标签: r date csv xts

我正在尝试从CSV文件生成xts。输出看起来可以作为一个简单的向量,即DateValue列分别是字符和数字。

但是,如果我想把它变成xts,那么输出看起来很可疑 我想知道xts上最左边一列的输出是什么?

> test <- read.csv("Test.csv", header = TRUE, as.is = TRUE)
> test
    Date Value
1 1/12/2014   1.5
2 2/12/2014   0.9
3 1/12/2015  -0.1
4 2/12/2015  -0.3
5 1/12/2016  -0.7
6 2/12/2016   0.2
7 7/12/2016  -1.0
8 8/12/2016  -0.2
9 9/12/2016  -1.1
> xts(test, order.by = as.POSIXct(test$Date), format = "%d/%m/%Y")
           Date        Value 
0001-12-20 "1/12/2014" " 1.5"
0001-12-20 "1/12/2015" "-0.1"
0001-12-20 "1/12/2016" "-0.7"
0002-12-20 "2/12/2014" " 0.9"
0002-12-20 "2/12/2015" "-0.3"
0002-12-20 "2/12/2016" " 0.2"
0007-12-20 "7/12/2016" "-1.0"
0008-12-20 "8/12/2016" "-0.2"
0009-12-20 "9/12/2016" "-1.1"

我只想设置一个由Date排序的xts,而不是左边的神秘列。我也为xts尝试了as.Date,但结果相同。

2 个答案:

答案 0 :(得分:2)

我建议您使用read.zoo从CSV读取数据,然后使用as.xts将结果转换为xts。

Text <- "Date,Value
1/12/2014,1.5
2/12/2014,0.9
1/12/2015,-0.1
2/12/2015,-0.3
1/12/2016,-0.7
2/12/2016,0.2
7/12/2016,-1.0
8/12/2016,-0.2
9/12/2016,-1.1"
z <- read.zoo(text=Text, sep=",", header=TRUE, format="%m/%d/%Y", drop=FALSE)
x <- as.xts(z)
#            Value
# 2014-01-12   1.5
# 2014-02-12   0.9
# 2015-01-12  -0.1
# 2015-02-12  -0.3
# 2016-01-12  -0.7
# 2016-02-12   0.2
# 2016-07-12  -1.0
# 2016-08-12  -0.2
# 2016-09-12  -1.1

请注意,您需要在实际通话中省略text = Text,并将其替换为file = "your_file_name.csv"

答案 1 :(得分:1)

这个问题似乎有两个方面。一,你的一个电话中有一个错位的括号;二,最左边的列是索引,使df <- read.table(text=" Date Value 1/12/2014 1.5 2/12/2014 0.9 1/12/2015 -0.1 2/12/2015 -0.3 1/12/2016 -0.7 2/12/2016 0.2 7/12/2016 -1.0 8/12/2016 -0.2 9/12/2016 -1.1", header=TRUE) df$Date <- as.Date(df$Date, format="%d/%m/%Y") library(xts) xts(df[-1], order.by=df[,1]) # Value # 2014-12-01 1.5 # 2014-12-02 0.9 # 2015-12-01 -0.1 # 2015-12-02 -0.3 # 2016-12-01 -0.7 # 2016-12-02 0.2 # 2016-12-07 -1.0 # 2016-12-08 -0.2 # 2016-12-09 -1.1 列变得多余。

11/14/2016