【问题标题】:R - import data under format DD-MM-YYYY HH:MM (PerformanceAnalytics)R - 以 DD-MM-YYYY HH:MM 格式导入数据(PerformanceAnalytics)
【发布时间】:2014-08-22 08:10:08
【问题描述】:

这是我在 excel 中的数据示例: (第一列 = 时间,第二列 = 资产 1 在过去 5 分钟内价格上涨/下跌,第 3 列 = 资产 2 相同)

6-09-2013 10:05  0,0004922067    -0,0006188252 
6-09-2013 10:10  0,0001639882    -0,0010296140 
6-09-2013 10:15  -0,0001639613   0,0000936977 
6-09-2013 10:20  -       0,0011963360 
6-09-2013 10:25  -       -0,0008062020 
6-09-2013 10:30  -0,0023778288   -0,0002017131 
6-09-2013 10:35  0,0023834963    0,0005115900 
6-09-2013 10:40  -0,0004919646   -0,0011090786 
8-09-2013 17:55  FALSE   FALSE 
8-09-2013 18:00  0,0016914750    -0,0010922993 

到目前为止我做了什么: 1 - 导出到 csv。 2 - 导入到 R

t3 <- read.table('t3.csv', sep="," , header=F , row.names=NULL)

3 - 当我输入命令时:t3.我有以下内容:

                V1              V2              V3
1  6-09-2013 10:05   0.0004922067   -0.0006188252 
2  6-09-2013 10:10   0.0001639882   -0.0010296140 
3  6-09-2013 10:15  -0.0001639613    0.0000936977 
4  6-09-2013 10:20            -      0.0011963360 
5  6-09-2013 10:25            -     -0.0008062020 
6  6-09-2013 10:30  -0.0023778288   -0.0002017131 
7  6-09-2013 10:35   0.0023834963    0.0005115900 
8  6-09-2013 10:40  -0.0004919646   -0.0011090786 
9  8-09-2013 17:55          FALSE           FALSE 
10 8-09-2013 18:00   0.0016914750   -0.0010922993 

现在不知道每行前面有1 2 3 4...10是否正常。

当我输入:start(t3)。我有:

Error in hasTsp(x) : invalid time series parameters specified

理想情况下,我希望他做的是将第一列用作时间序列。 我尝试了一些我在这里读到的想法,但没有成功。有人可以帮帮我吗?

非常感谢!

【问题讨论】:

  • 1- 是的,有索引是正常的。它被称为rownames。 2- t3 是一个data.framehasTsp 只接收一个vector 或一个matrix,所以你可能想给它传递一个列,例如hasTsp(t3$V1)
  • PerformanceAnalytics-package 使用 xts 类对象,将其作为 zoo 或 xts 类对象导入会更有意义。搜索:[r] import xts
  • 如果你像上面写的那样将它从 Excel 转换为 csv,为什么不将它转换为正确的 R 日期格式 (%Y-%m-%d)第一名 ?您甚至可以将其定义为 Excel 中的默认格式。

标签: r time-series performanceanalytics


【解决方案1】:

R 并不真正知道如何处理您的第一列;它没有意识到那些是日期。如果您希望它们被评估为日期,请尝试使用 lubridate 包,然后执行以下操作:

library(lubridate)
t3$Time <- mdy_hm(t3$V1)

现在,您已经有了日期格式的第一列,您可以相应地对其进行操作。

【讨论】:

    【解决方案2】:

    您可以将数据定义为在不规则日期时间点观察到的时间序列,如下所示:

    require(zoo)
    datetimes <- strptime(t3[,1], format = "%d-%m-%Y %H:%M")
    x <- zoo(t3, datetimes)
    start(x)
    #[1] "2013-09-06 10:05:00 CEST"
    

    【讨论】:

    • 或者这样读:library(zoo); colClasses &lt;- c(NA, NA, "numeric", "numeric"); fmt &lt;- "%m-%d-%Y %H:%M"; z &lt;- read.zoo("t3.csv", sep = ",", index = 1:2, format = fmt, tz = "", dec = ",", colClasses = colClasses, na.strings = c("-", "FALSE"))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-08
    • 2017-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多