我有一个数据帧,其中年份列类型为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 ...
带xts
和lubridate
:
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"#```