如何将df转换为R中的时间序列



我有一个数据帧,其中年份列类型为numeric,avgtemp列类型为numeric,那么我如何将其转换为具有良好格式的时间序列

示例:

year AvgTempZScore
<dbl>         <dbl>
1  1835         0.109
2  1836         0.168
3  1837         0.177
4  1838         0.143
5  1839         0.188
6  1840         0.198
7  1841         0.200
8  1842         0.230
9  1843         0.237
10  1844         0.194

Str

tibble [179 × 2] (S3: tbl_df/tbl/data.frame)
$ year         : num [1:179] 1835 1836 1837 1838 1839 ...
$ AvgTempZScore: num [1:179] 0.109 0.168 0.177 0.143 0.188 ...

xtslubridate:

xts::xts(x = df$AvgTempZScore,order.by = lubridate::ymd(df$year, truncated = 2L))
[,1]
1835-01-01 0.109
1836-01-01 0.168
1837-01-01 0.177
1838-01-01 0.143
1839-01-01 0.188
1840-01-01 0.198
1841-01-01 0.200
1842-01-01 0.230
1843-01-01 0.237
1844-01-01 0.19

这在使用ts()函数时非常有用。

db=structure(list(year = c(1835,1836,1837,1838,1839,1840,1841,1842,1843,1844), 
AvgTempZScore = c(0.109,0.168,0.177,0.143,0.188,0.198,0.200,0.230,0.237,0.194)), 
row.names = c(1:10),
class = "data.frame")
str(db)
#'data.frame':  10 obs. of  2 variables:
# $ year         : num  1835 1836 1837 1838 1839 ...
# $ AvgTempZScore: num  0.109 0.168 0.177 0.143 0.188 0.198 0.2 0.23 0.237 0.194
db = ts(db,frequency = 1,start=1835, end=1844)
str(db)
#Time-Series [1:10, 1:2] from 1835 to 1844: 1835 1836 1837 1838 1839 ...
#- attr(*, "dimnames")=List of 2
#..$ : NULL
#..$ : chr [1:2] "year" "AvgTempZScore"#```

最新更新