【问题标题】:Counting frequencies of Continuous Dates连续日期的计数频率
【发布时间】:2012-05-03 06:58:21
【问题描述】:

我有一个 data.frame 格式:

Date
2011-08-16
2011-08-17
2011-08-28
2011-09-01
2011-09-05
2011-09-06
2011-10-01
2011-10-02
2011-10-03
2011-10-04

我想做的是在日期按顺序出现时进行计数,即它们并排。

在上面的例子中,我们会有 2,1,1,2,4

【问题讨论】:

    标签: r


    【解决方案1】:

    这个怎么样:

    制作可重现的示例数据:

    dat <- read.table(text = "2011-08-16
    2011-08-17
    2011-08-28
    2011-09-01
    2011-09-05
    2011-09-06
    2011-10-01
    2011-10-02
    2011-10-03
    2011-10-04")
    

    使用rle 获取连续日期的运行计数,在this answerthis answer 之后:

    (rle (cumsum( c(0, diff(as.Date(dat$V1)) > 1) ) ) )$lengths
    [1] 2 1 1 2 4
    

    【讨论】:

    • 谢谢。不知道差异!不过,您不需要 cumsum。
    • @davewolfs 我不确定你说不需要cumsum 是什么意思。如果我这样忽略它:(rle (( c(0, diff(as.Date(dat$V1)) &gt; 1) ) ) )$lengths 那么我会得到与您想要的不同的东西:[1] 2 3 1 1 3
    • runs &lt;- rle(c(1,diff(as.Date(dat$Date)) &gt; 1)) table(runs$lengths[runs$values == 0])
    猜你喜欢
    • 2019-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-07
    • 2021-06-11
    • 1970-01-01
    • 2021-12-29
    相关资源
    最近更新 更多