read.zoo在我将格式指定为";%时添加月份和日期“是”;

read.zoo在我将格式指定为";%时添加月份和日期“是”;,r,time-series,zoo,R,Time Series,Zoo,我正在尝试使用read.zoo将data.frame转换为zoo对象。这一切似乎都很好,除了原始索引只包含年份(没有月份或天数),但当我在中阅读时,它们出现了 有没有办法创建索引仅为年的新对象 test.df3 <- data.frame (Country = rep (c (1, 5000), each = 10), Year = factor(rep(1990:1999, 2)), Valu

我正在尝试使用
read.zoo
data.frame
转换为
zoo
对象。这一切似乎都很好,除了原始索引只包含年份(没有月份或天数),但当我在中阅读时,它们出现了

有没有办法创建索引仅为年的新对象

test.df3 <- data.frame (Country = rep (c (1, 5000), each = 10),
                        Year = factor(rep(1990:1999, 2)),
                        Values = sample(x =  1:20, size = 20, replace = TRUE),
                        Weights = sample (x = seq (0,50,10), size = 20,
                                          replace =TRUE)
                       )
stuff <- read.zoo (test.df3, format = "%Y", index.column = 2)
这就是我希望得到的:

> head(stuff)
           Country Values Weights
1990             1      2      50
1990          5000     19       0
1991             1     10      30
1991          5000      3      20

指定
format
和no
FUN
tz
会导致启发式假设您想要一个
“Date”
类索引。指定
FUN=identity
不进行转换,并省略
格式=
。另外,似乎两个国家的时间序列是混合的,因此我们可以使用
split=
将它们拆分为各自的序列

read.zoo(test.df3, index = "Year", split = "Country", FUN = identity)
其中:

     Values.1 Weights.1 Values.5000 Weights.5000
1990        6        50           2           30
1991       14        20           7           50
1992        7        40           6            0
1993       18        30          17           20
1994       10        50          13            0
1995        3         0          17           40
1996        4        20          16           40
1997       20        20          18           20
1998        9        20          16           30
1999       20         0          15           30

完全正确!这只是一个玩具,我将不得不对由许多国家组成的更大的数据集执行同样的操作。然后我需要使用rollapply计算一些滚动平均值,因此,如果有一种方法将它们全部保留在两列中,然后执行后续的滚动平均值,这将是有利的,但我不确定它是否可行。如果您想以长形式表示它,那么它不是一个时间序列,所以zoo(这是时间序列基础设施的一个包)不适用。使用data.frame或data.table。
     Values.1 Weights.1 Values.5000 Weights.5000
1990        6        50           2           30
1991       14        20           7           50
1992        7        40           6            0
1993       18        30          17           20
1994       10        50          13            0
1995        3         0          17           40
1996        4        20          16           40
1997       20        20          18           20
1998        9        20          16           30
1999       20         0          15           30