【发布时间】:2023-03-03 05:47:19
【问题描述】:
我有一个相当奇怪的问题,可能最好用一个 R 会话的例子来描述。按照下面 cmets 中的要求,我已尝试使其可重现。
meto <- structure(c(30, 25, 25, 25, 20, 20, 20, 20, 20, 20), index = structure(c(12796,
12796.0416666667, 12796.0833333333, 12796.125, 12796.1666666667,
12796.2083333333, 12796.25, 12796.2916666667, 12796.3333333333,
12796.375), format = structure(c("d/m/y", "h:m:s"), .Names = c("dates",
"times")), origin = structure(c(1, 1, 1970), .Names = c("month",
"day", "year")), class = c("chron", "dates", "times")), class = "zoo")
示例数据集如下所示:
> meto
(13/01/05 00:00:00) (13/01/05 01:00:00) (13/01/05 02:00:00) (13/01/05 03:00:00) (13/01/05 04:00:00)
30 25 25 25 20
(13/01/05 05:00:00) (13/01/05 06:00:00) (13/01/05 07:00:00) (13/01/05 08:00:00) (13/01/05 09:00:00)
20 20 20 20 20
> str(meto)
‘zoo’ series from (13/01/05 00:00:00) to (13/01/05 09:00:00)
Data: num [1:10] 30 25 25 25 20 20 20 20 20 20
Index: Classes 'chron', 'dates', 'times' atomic [1:10] 12796 12796 12796 12796 12796 ...
..- attr(*, "format")= Named chr [1:2] "d/m/y" "h:m:s"
.. ..- attr(*, "names")= chr [1:2] "dates" "times"
..- attr(*, "origin")= Named num [1:3] 1 1 1970
.. ..- attr(*, "names")= chr [1:3] "month" "day" "year"
当我们转换为 XTS 时:
m <- as.xts(meto)
这会导致以下输出:
> str(m)
An ‘xts’ object from NA to NA containing:
Data: num [1:10, 1] 30 25 25 25 20 20 20 20 20 20
Indexed by objects of class: [chron,dates,times] TZ:
xts Attributes:
NULL
> summary(m)
Index m
Min. :NA Min. :20.0
1st Qu.:NA 1st Qu.:20.0
Median :NA Median :20.0
Mean :NA Mean :22.5
3rd Qu.:NA 3rd Qu.:25.0
Max. :NA Max. :30.0
NA's :10
Warning message:
In data.row.names(row.names, rowsi, i) :
some row.names duplicated: 2,3,4,5,6,7,8,9,10 --> row.names NOT used
如您所见,动物园时间序列中有很多数据,由 chron 对象索引。但是,当我使用as.xts 将其转换为xts 时间序列时,它看起来可以开始......但str 命令显示NAs 并将meto 的摘要与m 进行比较表明超过已在索引中创建了 36,000 个 NA!
有谁知道为什么会发生这种情况,或者我可以做些什么来解决它?
【问题讨论】:
-
没有实际的数据集,很难提供答案。尝试创建一个重现此问题的模型数据集。您可以添加几行代码来在您的帖子中创建模型数据集,以便我们可以运行代码。此外,提出一个可重现的示例有时已经解决了问题:)。
-
谢谢保罗。有没有办法轻松地将数据集的一部分转储到可以从命令行轻松读回的字符串?我能想到的提供数据的唯一方法(除了手动创建数据)是提供 CSV 文件以供下载。
-
@LouisChiffre:谢谢,这正是我想要的。
-
@PaulHiemstra:我让它可重现(我认为...)
-
请注意,您可以简单地将
dput的结果分配给一个变量。因此我删除了多余的meto <- dget(textConnection(...代码。
标签: r time-series xts zoo