xts 格式的时间戳和高频包的列名

Posted

技术标签:

【中文标题】xts 格式的时间戳和高频包的列名【英文标题】:Column name for timestamps in xts format and the highfrequency package 【发布时间】:2021-08-04 20:55:13 【问题描述】:

我已在 R 中将财务数据框转换为 xts 格式。但是,它删除了日期列的标题。

                     EURAUD  EURCAD  EURGBP   EURHKD
2013-10-01 00:00:00 1.45070 1.39638 0.83539 10.48859
2013-10-01 00:01:00 1.45058 1.39647 0.83539 10.48938
2013-10-01 00:02:00 1.45043 1.39636 0.83536 10.48825

问题是当我使用highfrequency 包中的rCov 函数时。

> rc <- rCov(rData = x, makeReturns = TRUE)

它给了我以下错误:

Error in names(result) <- unique(as.Date(index(rData))) : 
'names' attribute [670] must be the same length as the vector [669]

我的理解是每列的长度必须相同,但是由于标题问题,日期列少了一个,如果我是正确的。

如果有人能帮我解决这个小问题,我将不胜感激?

输出:

结构(C(1.4507,1.45058,1.45043,1.45035,1.39638,1.39647,1.39636,1.39641,0.83539,0.83539,0.83536,0.83538,10.48859,10.48938,10.48825,10.48868,297.028,297.028,297.028,297.028,133.026,133.071 ,133.029,133.003,1.62955,1.62925,1.62899,1.62898,43.82374,4374,43.82374,4374,43.82374,43.82374,8.68498,8.68568,8.68498,8.68568,8.68498,8.68423,1.69654,1.69687,1.69654,1.69688),1.6968,1.69688),class= C(“XTS”,“动物园”) , 索引 = 结构 (c(1380571200, 1380571260, 1380571320, 1380571380), tzone = "", tclass= c("POSIXct", "POSIXt")), .Dim = c(4L, 10L), .Dimnames = list( NULL, c("EURAUD", "EURCAD", "EURGBP", "EURHKD", "EURHUF", "EURJPY", "EURNZD", "EURRUB", "EURSEK", "EURSGD"))

【问题讨论】:

xts 索引属性仅此而已,即它是xts 的特征。可能是该函数正在检查唯一索引值(可能通过转换为Date 类) 知道如何使用rCov 函数中的数据吗? 你能否展示一个给出错误的示例的 dput,以便我可以测试它 它只是给了我这个错误,因为日期列少了一行。 没有。它没有少一排。 xts 对象的索引不是它的列。它是对象的属性。请阅读r 标签页面顶部的说明,并使用 dput 以可重现的方式提供输入。 【参考方案1】:

我无法重现该错误。尝试开始新的 R 会话,然后重试。

library(highfrequency)
library(xts)

x <- structure(c(1.4507, 1.45058, 1.45043, 1.45035, 1.39638, 1.39647, 1.39636, 
  1.39641, 0.83539, 0.83539, 0.83536, 0.83538, 10.48859, 10.48938, 10.48825, 
  10.48868, 297.028, 297.028, 297.028, 297.028, 133.026, 133.071, 133.029, 
  133.003, 1.62955, 1.62925, 1.62899, 1.62898, 43.82374, 43.82374, 43.82374, 
  43.82374, 8.68498, 8.68568, 8.68498, 8.68423, 1.69654, 1.69687, 1.69678, 
  1.69688), class = c("xts", "zoo"), index = structure(c(1380571200, 1380571260, 
  1380571320, 1380571380), tzone = "", tclass = c("POSIXct", "POSIXt")), 
  .Dim = c(4L, 10L), .Dimnames = list(NULL, c("EURAUD", "EURCAD", "EURGBP", 
  "EURHKD", "EURHUF", "EURJPY", "EURNZD", "EURRUB", "EURSEK", "EURSGD")))
  


rCov(rData = x, makeReturns = TRUE)

给予:

              EURAUD       EURCAD       EURGBP       EURHKD EURHUF
EURAUD  2.057940e-08 8.396314e-10 2.393188e-09 2.649288e-09      0
EURCAD  8.396314e-10 1.164117e-08 3.686169e-09 1.480872e-08      0
EURGBP  2.393188e-09 3.686169e-09 1.862868e-09 4.850477e-09      0
EURHKD  2.649288e-09 1.480872e-08 4.850477e-09 1.896003e-08      0
EURHUF  0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00      0
EURJPY  1.544714e-08 3.966595e-08 6.656647e-09 5.146879e-08      0
EURNZD  3.207325e-08 4.856334e-10 5.584419e-09 3.074993e-09      0
EURRUB  0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00      0
EURSEK  6.430929e-09 8.450929e-09 8.267730e-10 1.121259e-08      0
EURSGD -1.385462e-08 1.882360e-08 3.315736e-09 2.277912e-08      0
              EURJPY        EURNZD EURRUB        EURSEK        EURSGD
EURAUD  1.544714e-08  3.207325e-08      0  6.430929e-09 -1.385462e-08
EURCAD  3.966595e-08  4.856334e-10      0  8.450929e-09  1.882360e-08
EURGBP  6.656647e-09  5.584419e-09      0  8.267730e-10  3.315736e-09
EURHKD  5.146879e-08  3.074993e-09      0  1.121259e-08  2.277912e-08
EURHUF  0.000000e+00  0.000000e+00      0  0.000000e+00  0.000000e+00
EURJPY  2.522492e-07 -1.069295e-08      0  6.958129e-08  7.100628e-08
EURNZD -1.069295e-08  5.940738e-08      0 -1.446182e-09 -2.770654e-08
EURRUB  0.000000e+00  0.000000e+00      0  0.000000e+00  0.000000e+00
EURSEK  6.958129e-08 -1.446182e-09      0  2.044932e-08  1.486076e-08
EURSGD  7.100628e-08 -2.770654e-08      0  1.486076e-08  4.411457e-08

packageVersion("highfrequency")
## [1] ‘0.8.0.1’
packageVersion("xts")
## [1] ‘0.12.1’
R.version.string
## [1] "R version 4.0.4 Patched (2021-03-05 r80091)"

【讨论】:

感谢您的帮助。我的电脑本身可能有问题。 尝试复制答案中的代码并将其粘贴到rdrr.io/snippets

以上是关于xts 格式的时间戳和高频包的列名的主要内容,如果未能解决你的问题,请参考以下文章

python_时间戳和格式化时间转换封装函数

使用postgresql格式化时间戳和数字的两个问题

时间戳和日期转换

Linux时间戳和标准时间的互转

Python time和datetime时间戳和时间字符串相互转换

100个 Unity实用技能 | Lua中获取当前时间戳,时间戳和时间格式相互转换时间戳转换为多久之前