亲爱的社区,
我收到的数据将在数据框中:
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
... ... ... ... ... ... ...
Run Code Online (Sandbox Code Playgroud)
我想使用zoo,因为它似乎是一个灵活的对象类.我只是从R开始,我试图阅读包的描述(小插曲).
问题:
感谢您的支持.
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"))
Run Code Online (Sandbox Code Playgroud)
结果是:
> 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
Run Code Online (Sandbox Code Playgroud)
上面假设对于第 5 列的给定值,日期是唯一的。如果情况并非如此,则包含 的aggregate = mean参数或其他一些值aggregate。
现在,我们将其汇总为每月动物园系列:
aggregate(z, as.yearmon, mean)
Run Code Online (Sandbox Code Playgroud)
也可以使用以下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)
Run Code Online (Sandbox Code Playgroud)
另请参阅?read.zoo、vignette("zoo-read")、以及其他小插图和帮助文件。?aggregate.zoo
| 归档时间: |
|
| 查看次数: |
1896 次 |
| 最近记录: |