【问题标题】:Create a lag vector with repeated entries创建具有重复条目的滞后向量
【发布时间】:2018-12-30 18:12:08
【问题描述】:

我想创建一个滞后向量,但挑战在于重复一些观察。让我们考虑以下向量:

date <- c("2016-04-11", "2016-04-11", "2016-04-11", "2015-05-11", "2015-05-11", "2014-05-11")

前三个元素是在同一时间点观察到的(最后一个顺序的项目),第四个和第五个(倒数第二个顺序的项目)同时观察到第六个元素(第一个顺序,仅由一项)。

滞后向量应如下所示:

date <- c("2015-05-11", "2015-05-11", "2015-05-11", "2014-05-11", "2014-05-11", NA)

有没有一种简单的方法来创建这个滞后日期向量?

【问题讨论】:

    标签: r date vector lag


    【解决方案1】:

    对数据进行游程编码:

    date <- c("2016-04-11", "2016-04-11", "2016-04-11", "2015-05-11", "2015-05-11", "2014-05-11")
    res <- rle(date)
    res$values <- c(res$values[-1], NA)
    res <- inverse.rle(res)
    #[1] "2015-05-11" "2015-05-11" "2015-05-11" "2014-05-11" "2014-05-11" NA  
    

    【讨论】:

    • 谢谢!看起来不错。这只是一个玩具示例,但在“真实”应用程序中,最后一个条目可能会出现多次。因此,“NA”的处理应该是依赖于向量的,因为它并不总是必须是一个值。在实际示例中,重复模式因观察而异。
    • 我不明白你的担忧。如果输入向量中有另一个"2014-05-11",则结果将包含第二个NA。您应该查看 rle 返回的内容(即研究其文档)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-01
    • 1970-01-01
    相关资源
    最近更新 更多