【问题标题】:Setting specific time period value in xts/zoo dataset在 xts/zoo 数据集中设置特定时间段值
【发布时间】:2012-12-30 01:00:04
【问题描述】:

尝试为数据集生成名为“var”的第三个变量,该数据集在日期“2010-09-24”中的值仅为 100,在所有其他时间段中为 NA。

> dataset
           weight
2010-10-04  52495
2010-10-01  53000
2010-09-30  52916
2010-09-29  52785
2010-09-28  53348
2010-09-27  52885
2010-09-24  52174
2010-09-23  51461
2010-09-22  51286
2010-09-21  50968
2010-09-20  49250
> dataset=merge(dataset,var=NA)

我知道我可以使用ifelse(index(dataset)=="2010-09-24",100,NA) 来生成变量。但是是否有任何函数可以用来将样本限制为“2010-09-24”,然后将值放在正确的列和行中?

【问题讨论】:

    标签: r xts zoo


    【解决方案1】:

    我以前从未见过这样使用 merge(),而且该命令对我不起作用。所以也许我误解了这个问题或遗漏了关于时间序列数据的一些东西,但我会这样做:

    1:添加一个新的NAs向量

    数据集$var

    2:索引到你想要的日期,并将值 100 保存到变量 var

    数据集[dataset$date=="24-09-2010","var"]

    这就是你要找的吗?

    【讨论】:

    • 您实际上不需要rep 来创建新的NA 列。 dataset$var <- NA 就足够了
    【解决方案2】:

    是 -- 如果您使用具有适当时间索引的数据类型,例如 zooxts

    在此处查看关于这两个问题的先前问题,和/或阅读zoo 包中的小插曲。

    【讨论】:

    • 嗨 Dirk,我确实使用 zoo 包加载了数据。虽然我找不到任何可以限制样本并在数据中放置确定值的函数。
    • @Gabriel,如果z 是矢量动物园对象,那么z[as.Date("2010-01-24")] <- 100
    猜你喜欢
    • 1970-01-01
    • 2013-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-14
    • 2018-01-21
    • 2018-07-13
    • 2012-08-10
    相关资源
    最近更新 更多