如何创建缺少年份的月度时间序列?

时间:2013-12-15 07:28:41

标签: r dataframe time-series zoo

我有月度数据框(stn),我希望将其转换为单个列(日期与雨)时间序列动物园对象,因为它缺少年份。我想用动物园包做一些分析。有什么帮助吗?

> head(stn)

  Year   Jan   Feb   Mar   Apr  May Jun Jul Aug Sep Oct   Nov   Dec

1 1990  79.6 168.6 122.6 161.9  0.0   0   0   0   0 0.0  11.2  45.4

2 1991 155.6 173.9 163.2  37.4  0.0   0   0   0   0 0.0   0.0  47.2

3 1995  97.7  84.9 117.1   0.0  3.6   0   0   0   0 0.4   0.0  99.8

4 1996 188.8 155.9 214.3  25.3  0.0   0   0   0   0 0.0   0.0 134.3

5 1997  37.3 202.1  24.4  21.4 39.0   0   0   0   0 0.0 120.2 372.1

6 1998 209.4 175.1 117.4 135.4  5.2   0   0   0   0 0.0   0.0   0.0

2 个答案:

答案 0 :(得分:1)

我知道重塑或融化可能是“正确”的方式,但是使用您的数据很容易伪造它,因为列是连续的。

require(zoo)
stn2 <- stn[,-1]                    # Extracts everything but the Year column
stn2 <- as.vector(t(stn2))          # Turns your matrix into one long vector
date <- apply(                      # Make a date column with a character vector.
             cbind(
                   rep( stn$Year,each=12 ),
                   rep( 1:12, times=length(stn$Year) )
             ), 1, paste, collapse="-" )
date <- as.yearmon(date, "%Y-%m")                # Convert it to a yearmon object
stn2 <- data.frame("Date" = date, "Rain" = stn2) # Make a data frame

答案 1 :(得分:0)

您可以尝试使用stn2 <- reshape2::melt(stn, id.vars = Year)的组合,然后使用此结果merge(stn2,masteryearlist,all=TRUE),其中masteryearlist是您可以手动创建的内容。