gpt4 book ai didi

使用 read.zoo 读取时间序列表

转载 作者:行者123 更新时间:2023-12-04 10:09:50 25 4
gpt4 key购买 nike

我找遍了所有地方,但我找不到以前问过这个问题的地方。

将这些数据放入适当的动物园系列的干净方法是什么?这个版本是复制/粘贴,使这篇文章更容易,但它总是以下表的形式出现(来自文本文件)。我的 read.zoo() 语句将 Year 读取为索引,但将季度(Qtr1、Qtr2 等)读取为列名。我一直试图找出一种非垃圾方式来将列作为索引的“四分之一”部分读取,但它很草率(太草率而无法发布)。我猜这个问题已经解决了,但我找不到它。

> texinp <- "   
+ Year Qtr1 Qtr2 Qtr3 Qtr4
+ 1992 566 443 329 341
+ 1993 344 212 133 112
+ 1994 252 252 199 207"
> z <- read.zoo(textConnection(texinp), header=TRUE)
> z

从 as.yearqtr() 文档中,目标看起来像:
1992 Q1 1992 Q2 1992 Q3 1992 Q4 1993 Q1 1993 Q2 1993 Q3 1993 Q4    
566 443 329 341 344 212 133 112

1994 Q1 1994 Q2 1994 Q3 1994 Q4
252 252 199 207

最佳答案

read.zoo假设您的数据最多有一个时间索引列,因此您必须自己处理。先用read.table阅读

zt <- read.table( textConnection( texinp ), header = TRUE)

然后使用 melt 将其转换为“长表”来自 reshape 的函数包裹:
require(reshape)
zt.m <- melt( zt, id = 'Year', variable_name = 'Qtr')

> zt.m
Year Qtr value
1 1992 Qtr1 566
2 1993 Qtr1 344
3 1994 Qtr1 252
4 1992 Qtr2 443
5 1993 Qtr2 212
6 1994 Qtr2 252
7 1992 Qtr3 329
8 1993 Qtr3 133
9 1994 Qtr3 199
10 1992 Qtr4 341
11 1993 Qtr4 112
12 1994 Qtr4 207

最后创建您想要的 zoo目的:
z <- with( zt.m, zoo( value, as.yearqtr(paste(Year, Qtr), format = '%Y Qtr%q')))

> z
1992 Q1 1992 Q2 1992 Q3 1992 Q4 1993 Q1 1993 Q2 1993 Q3 1993 Q4 1994 Q1 1994 Q2
566 443 329 341 344 212 133 112 252 252
1994 Q3 1994 Q4
199 207

关于使用 read.zoo 读取时间序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4709644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com