首页 > 解决方案 > R:as_tbl_time 错误:指定的“索引”不是基于时间的

问题描述

这是我的第一篇文章,我对 R (RGui) 完全陌生,如果我写在错误的地方、部分甚至是错误的网站上,我深表歉意。我希望不是!

我花了几天时间试图找出解决我遇到的问题的方法,但我找不到解决方案。

我正在尝试使用该anomalize软件包。这需要将数据转换为tibble time.

导入数据 (.CSV) 后,我已经能够将它们转换为 tibble ( tbl_df),但是,如果我尝试将它们转换为,tbl_time我会收到以下消息:

错误:指定的索引不是基于时间的

我试图调整 .CSV 格式(不确定是否需要)更改日期格式和标签,但仍然......不起作用!

我将粘贴我所拥有的,我相信你们中的一些人将能够帮助我。非常感谢!

这是原始数据集的一部分,就像每月采集数据点 ( gwt) 及其旁边的采集日期 ( date)

              date gwt
1 01/02/2003 01:21:18 0.41
2 01/03/2003 01:21:18 0.35
3 01/04/2003 01:21:18 0.22
4 01/05/2003 01:21:18 0.03
5 01/06/2003 01:21:18 -0.05
6 01/07/2003 01:21:18 -0.09
7 01/08/2003 01:21:18 -0.10
8 01/09/2003 01:21:18 -0.02
9 01/10/2003 01:21:18 0.04
10 01/11/2003 01:21:18 0.11
11 01/12/2003 01:21:18 0.08
12 01/01/2004 01:21:18 0.00
13 01/02/2004 01:21:18 -0.19
14 01/03/2004 01:21:18 -0.34
15 01/04/2004 01:21:18 -0.46
16 01/05/2004 01:21:18 -0.59
17 01/06/2004 01:21:18 -0.63

这是tbl_df我能够获得的:

A tibble: 46 x 2
date gwt

    1 01/02/2003 01:21:18 0.41
    2 01/03/2003 01:21:18 0.35
    3 01/04/2003 01:21:18 0.22
    4 01/05/2003 01:21:18 0.03
    5 01/06/2003 01:21:18 -0.05
    6 01/07/2003 01:21:18 -0.09
    7 01/08/2003 01:21:18 -0.1
    8 01/09/2003 01:21:18 -0.02
    9 01/10/2003 01:21:18 0.04
    10 01/11/2003 01:21:18 0.11

... with 36 more rows

这是我尝试获取tbl_time(如上所述)时收到的消息:

t2 <- as_tbl_time(t1, date)
Error: Specified 'index' is not time based

PS我尝试更改格式,删除时间并仅保留日期,但这没有任何区别。

有人能帮忙吗?我会很感激

再次抱歉,对于任何错误提前道歉。

亲切的问候,

西蒙妮

标签: r

解决方案


我知道一开始使用正确的列格式是多么令人沮丧。

我建议在您阅读.csv文件并将其转换为tbl_df. 我怀疑你的date专栏是character类型。因此,最简单的方法是使用transmute函数 fromdplyr重新格式化您的date列:

tbl <- tbl_df %>% 
  transmute(date = as.POSIXct(strptime(date,"%d/%m/%Y %H:%M:%S")),
            gwt = gwt)

tbl应该是这样的:

> tbl
# A tibble: 17 x 2
   date                  gwt
   <dttm>              <dbl>
 1 2003-02-01 01:21:18  0.41
 2 2003-03-01 01:21:18  0.35
 3 2003-04-01 01:21:18  0.22
 4 2003-05-01 01:21:18  0.03
 5 2003-06-01 01:21:18 -0.05
 6 2003-07-01 01:21:18 -0.09
 7 2003-08-01 01:21:18 -0.1 
 8 2003-09-01 01:21:18 -0.02
 9 2003-10-01 01:21:18  0.04
10 2003-11-01 01:21:18  0.11
11 2003-12-01 01:21:18  0.08
12 2004-01-01 01:21:18  0   
13 2004-02-01 01:21:18 -0.19
14 2004-03-01 01:21:18 -0.34
15 2004-04-01 01:21:18 -0.46
16 2004-05-01 01:21:18 -0.59
17 2004-06-01 01:21:18 -0.63

注意date列的类型 - 现在是dttm.

现在您可以轻松转换tbl为时间感知型tbl

tbl.t <- tbl_time(tbl,index = date)

结果如下:

> tbl.t
# A time tibble: 17 x 2
# Index: date
   date                  gwt
   <dttm>              <dbl>
 1 2003-02-01 01:21:18  0.41
 2 2003-03-01 01:21:18  0.35
 3 2003-04-01 01:21:18  0.22
 4 2003-05-01 01:21:18  0.03
 5 2003-06-01 01:21:18 -0.05
 6 2003-07-01 01:21:18 -0.09
 7 2003-08-01 01:21:18 -0.1 
 8 2003-09-01 01:21:18 -0.02
 9 2003-10-01 01:21:18  0.04
10 2003-11-01 01:21:18  0.11
11 2003-12-01 01:21:18  0.08
12 2004-01-01 01:21:18  0   
13 2004-02-01 01:21:18 -0.19
14 2004-03-01 01:21:18 -0.34
15 2004-04-01 01:21:18 -0.46
16 2004-05-01 01:21:18 -0.59
17 2004-06-01 01:21:18 -0.63

推荐阅读