8

亲爱的社区,

我收到的数据将在一个数据框中:

Var_1      Var_2         Date        VaR_3  VaR_4   VaR_5   Var_6
1           4       2010-01-18         7    apple    10    sweet
2           5       2010-07-19         8    orange   11    sour
3           6       2010-01-18         9    kiwi     12    juicy
...        ...      ...               ...   ...     ...    ... 

我想使用动物园,因为它似乎是一个灵活的对象类。我刚从 R 开始,我试图阅读包的描述(小插图)。

问题:

  1. 给定以上数据作为数据框,推荐哪种方法将完整的df转换成zoo对象,告诉zoo应该使用第三列作为日期列(数据中日期可以出现多次)?
  2. 我如何每月汇总所有其他列,除了第 4 列和第 6 列使用 zoo 内置函数?zoo 是否能够自动丢弃分类变量而只使用那些适合聚合的列?
  3. 对于第 4 列中的每个类别,我如何每月汇总所有数字列(第 6 列不应包括在内,因为它是非数字的)。

谢谢你的支持。

4

1 回答 1

4

zoo 对象是时间序列,通常是数字向量或矩阵。似乎您真正拥有的是一堆不同的时间序列,其中第 5 列标识了它是哪个序列。即有苹果系列、橙系列、猕猴桃系列等,每一个都有几列。

删除最后一列,因为它不是数字,使用第三列作为索引并在第 5 列上拆分,我们有:

# create test data
Lines <- "Var_1      Var_2         Date        VaR_3  VaR_4   VaR_5   Var_6
1           4       2010-01-18         7    apple    10    sweet
2           5       2010-07-19         8    orange   11    sour
3           6       2010-01-18         9    kiwi     12    juicy"
cat(Lines, "\n", file = "data.txt")

library(zoo)
z <- read.zoo("data.txt", header = TRUE, index = 3, split = "VaR_5",
  colClasses = c(Var_6 = "NULL"))

结果是:

> z
           Var_1.apple Var_2.apple VaR_3.apple VaR_5.apple Var_1.kiwi
2010-01-18           1           4           7          10          3
2010-07-19          NA          NA          NA          NA         NA
           Var_2.kiwi VaR_3.kiwi VaR_5.kiwi Var_1.orange Var_2.orange
2010-01-18          6          9         12           NA           NA
2010-07-19         NA         NA         NA            2            5
           VaR_3.orange VaR_5.orange
2010-01-18           NA           NA
2010-07-19            8           11

以上假设对于第 5 列的给定值,日期是唯一的。如果不是这种情况,则包括aggregate = mean参数或其他一些值aggregate

现在要将其汇总为每月的动物园系列,我们有:

aggregate(z, as.yearmon, mean)

也可以使用以下FUN = as.yearmon参数直接将其转换为每月:

zm <- read.zoo("data.txt", header = TRUE, index = "Date", split = "VaR_4", 
  FUN = as.yearmon, colClasses = c(Var_6 = "NULL"), aggregate = mean)

请参阅?read.zoovignette("zoo-read")?aggregate.zoo其他小插曲和帮助文件。

于 2011-10-24T15:56:00.690 回答