use*_*446 47 r time-series coerce dataframe xts
我正在尝试使用as.xts()方法将数据帧转换为xts对象.这是我的输入数据帧q:
q
t x
1 2006-01-01 00:00:00 1
2 2006-01-01 01:00:00 2
3 2006-01-01 02:00:00 3
str(q)
'data.frame': 10 obs. of 2 variables:
$ t: POSIXct, format: "2006-01-01 00:00:00" "2006-01-01 01:00:00" "2006-01-01 02:00:00" "2006-01-01 03:00:00" ...
$ x: int 1 2 3 4 5 6 7 8 9 10
Run Code Online (Sandbox Code Playgroud)
结果是:
> as.xts(q)
Error in as.POSIXlt.character(x, tz, ...) :
character string is not in a standard unambiguous format
Run Code Online (Sandbox Code Playgroud)
这是我能想到的最简单的例子,所以没有让它工作是非常令人沮丧的......任何帮助都表示赞赏!
Dir*_*tel 75
这是清楚地记录--- XTS和动物园的目的是通过提供形成2个参数,一个vector或matrix携带数据和Date,POSIXct,chron,...类型供给时间信息(或在的情况下,动物园的排序).
所以做点什么
qxts <- xts(q[,-1], order.by=q[,1])
Run Code Online (Sandbox Code Playgroud)
你应该被设定.
Dr *_*r G 20
好吧,as.xts默认假设日期存储在data.frame的rownames中.因此错误消息.快速而肮脏的修复方法是:
rownames(q) = q[1]
as.xts(q)
Run Code Online (Sandbox Code Playgroud)
但是你得到一个带有日期字符串的额外列.理想情况下,您将构建data.frame,并将日期作为rownames开头.
这是使用tidyquant包的解决方案,其中包含一个as_xts()将数据帧强制转换为xts对象的函数.它还包含as_tibble()将xts对象强制转换为tibbles("整洁"数据帧).
重新创建数据框(请注意,日期时间类用于"整洁"数据框,但可以使用任何明确的日期或日期时间类):
> q
# A tibble: 3 × 2
t x
<dttm> <dbl>
1 2006-01-01 00:00:00 1
2 2006-01-01 01:00:00 2
3 2006-01-01 02:00:00 3
Run Code Online (Sandbox Code Playgroud)
使用as_xts()转换到"XTS"级.指定参数,, date_col = t以将"t"列指定为用作行名称的日期:
> library(tidyquant)
> as_xts(q, date_col = t)
x
2006-01-01 00:00:00 1
2006-01-01 01:00:00 2
2006-01-01 02:00:00 3
Run Code Online (Sandbox Code Playgroud)
返回是一个xts具有正确日期或日期时间作为行名称的对象.