【发布时间】:2018-11-01 13:17:03
【问题描述】:
我有一个包含两列的数据框 (DF)。在第一栏中我有日期,在第二栏中我有我的兴趣价值 (VOI)。
DF 的显示是这样的:
|---------------------|------------------|
| Date | VOI |
|---------------------|------------------|
| Jan-1971 | 34 |
|---------------------|------------------|
| Jan-1972 | 28 |
|---------------------|------------------|
| Jan-1973 | 29 |
|---------------------|------------------|
| Jan-1974 | 37 |
|---------------------|------------------|
| ... | ... |
|---------------------|------------------|
| Jan-2017 | 36 |
|---------------------|------------------|
| Fev-1971 | 48 |
|---------------------|------------------|
| Fev-1972 | 49 |
|---------------------|------------------|
| Fev-1973 | 52 |
|---------------------|------------------|
| Fev-1974 | 50 |
|---------------------|------------------|
| ... | ... |
|---------------------|------------------|
| Mar-1971 | 30 |
|---------------------|------------------|
| ... | ... |
|---------------------|------------------|
| Mar-2017 | 36 |
|---------------------|------------------|
| ... | ... |
|---------------------|------------------|
| Dez-1971 | 15 |
|---------------------|------------------|
| ... | ... |
|---------------------|------------------|
| Dez-2017 | 19 |
|---------------------|------------------|
简而言之,数据以月份的汇总周期呈现。
首先我有 1971 年到 2017 年 1 月的所有 VOI(47 个数据点),然后我有同一时期 2 月的所有 VOI,因此,点数相同。这种重复一直持续到 12 月,也有 47 个数据点。
我应用 lubridate 中的 ymd() 将我的日期转换为 POSIXct 值。
现在我想从我的 VOI 中创建一个时间序列对象。我试过了:
ts = xts(x = df$Vazao, order.by = index(df$Date))
和
ts = xts(x = df$Vazao, order.by = df$Data)
但没有一个有效。我不知道我在哪里犯了错误,但我想知道这与我的日期不是按时间顺序排列的事实有关。我认为使用 ymd() 命令可以解决这个问题并“让 R 理解”我的时间序列从 1971 年 1 月、1971 年 2 月、1971 年 3 月、...、2017 年 12 月开始。
如何将此数据框转换为时间序列对象?
感谢您的意见。
【问题讨论】:
-
您应该输入数据样本。
标签: r time-series lubridate