无法将 data.frame 对象转换为 xts 对象:给出 POSIXlt 错误。 (右)
Can't convert data.frame object to xts object: Gives POSIXlt error. (R)
我正在尝试将源自 .csv 的 data.frame 对象转换为 xts 对象。它没有正确转换为 xts 对象,而是给出了错误:
Error in as.POSIXlt.character(x, tz, ...) : character string is not in a standard unambiguous format
我尝试将日期列更改为 class 日期,但无济于事。这是代码:
library(xts)
mydata <- read.csv("https://sites.google.com/site/jonspinney/home/mba-6693-2017/edhec.csv?attredirects=0&d=1",header=TRUE,sep=",")
mydata$Date <- as.POSIXlt(mydata$Date, format = "%m/%d/%Y")
mydata <- as.xts(mydata)
class(mydata$Date)
class(mydata)
当您在数据框上调用通用函数 as.xts
时,将调用 xts:::as.xts.data.frame
。默认情况下,它期望数据框的 row.names
为 DateTime,而 mydata
的第一列为 DateTime,而 row.names(mydata)
给出 1, 2, 3, 4, ...
这当然不是要转换的 as.POSIXlt
或 as.POSIXct
的可识别字符串格式。
由于您已经将Date
列设置为DateTime格式(POSIXlt
格式),您可以直接使用xts
:
oo <- xts(mydata[-1], mydata[[1]])
str(oo)
#An ‘xts’ object on 1993-12-31/2015-11-30 containing:
# Data: num [1:264, 1:9] 100 100.4 100.5 99.5 97 ...
# - attr(*, "dimnames")=List of 2
# ..$ : NULL
# ..$ : chr [1:9] "CA" "SB" "EM" "EMN" ...
# Indexed by objects of class: [POSIXlt,POSIXt] TZ:
# xts Attributes:
# NULL
class(oo)
#[1] "xts" "zoo"
您可以使用 read.zoo
和 as.xts
将其设为 one-liner:
myData <- as.xts(read.zoo("https://sites.google.com/site/jonspinney/home/mba-6693-2017/edhec.csv?attredirects=0&d=1",header=TRUE,sep=",", format = "%m/%d/%Y" ))
> str(myData)
An ‘xts’ object on 1993-12-31/2015-11-30 containing:
Data: num [1:264, 1:9] 100 100.4 100.5 99.5 97 ...
- attr(*, "dimnames")=List of 2
..$ : NULL
..$ : chr [1:9] "CA" "SB" "EM" "EMN" ...
Indexed by objects of class: [Date] TZ: UTC
xts Attributes:
NULL
我正在尝试将源自 .csv 的 data.frame 对象转换为 xts 对象。它没有正确转换为 xts 对象,而是给出了错误:
Error in as.POSIXlt.character(x, tz, ...) : character string is not in a standard unambiguous format
我尝试将日期列更改为 class 日期,但无济于事。这是代码:
library(xts)
mydata <- read.csv("https://sites.google.com/site/jonspinney/home/mba-6693-2017/edhec.csv?attredirects=0&d=1",header=TRUE,sep=",")
mydata$Date <- as.POSIXlt(mydata$Date, format = "%m/%d/%Y")
mydata <- as.xts(mydata)
class(mydata$Date)
class(mydata)
当您在数据框上调用通用函数 as.xts
时,将调用 xts:::as.xts.data.frame
。默认情况下,它期望数据框的 row.names
为 DateTime,而 mydata
的第一列为 DateTime,而 row.names(mydata)
给出 1, 2, 3, 4, ...
这当然不是要转换的 as.POSIXlt
或 as.POSIXct
的可识别字符串格式。
由于您已经将Date
列设置为DateTime格式(POSIXlt
格式),您可以直接使用xts
:
oo <- xts(mydata[-1], mydata[[1]])
str(oo)
#An ‘xts’ object on 1993-12-31/2015-11-30 containing:
# Data: num [1:264, 1:9] 100 100.4 100.5 99.5 97 ...
# - attr(*, "dimnames")=List of 2
# ..$ : NULL
# ..$ : chr [1:9] "CA" "SB" "EM" "EMN" ...
# Indexed by objects of class: [POSIXlt,POSIXt] TZ:
# xts Attributes:
# NULL
class(oo)
#[1] "xts" "zoo"
您可以使用 read.zoo
和 as.xts
将其设为 one-liner:
myData <- as.xts(read.zoo("https://sites.google.com/site/jonspinney/home/mba-6693-2017/edhec.csv?attredirects=0&d=1",header=TRUE,sep=",", format = "%m/%d/%Y" ))
> str(myData)
An ‘xts’ object on 1993-12-31/2015-11-30 containing:
Data: num [1:264, 1:9] 100 100.4 100.5 99.5 97 ...
- attr(*, "dimnames")=List of 2
..$ : NULL
..$ : chr [1:9] "CA" "SB" "EM" "EMN" ...
Indexed by objects of class: [Date] TZ: UTC
xts Attributes:
NULL