簡體   English   中英

計算R中間隔內的日期

[英]Counting dates within interval in R

給定一組日期如下以及在每個日期結束的30天間隔,我想計算在該間隔內的日期數,例如,

library(lubridate)
library(dplyr)
df = data.frame(id = c(1, 2, 3, 4, 5, 6),
               dates = as.Date(c('2017-01-15', '2017-01-17', '2017-02-01', 
                               '2017-02-12', '2017-03-30', '2017-04-01')))

df <- df %>% mutate(interval = interval(dates - 30, dates))

運用

sum(x$dates %within% x$interval[5])

正確返回1,因為只有一個日期落在第5個間隔內,但我想以矢量化的方式對所有間隔執行此操作。 任何建議贊賞。

使用purrr::map_int ,我們可以按時間間隔瀏覽列,並獲取每個列中的日期數。 請注意,這不是“矢量化”,但我認為你想做什么。

library(lubridate)
library(tidyverse)
df <- data.frame(
  id = c(1, 2, 3, 4, 5, 6),
  dates = as.Date(c(
    "2017-01-15", "2017-01-17", "2017-02-01",
    "2017-02-12", "2017-03-30", "2017-04-01"
  ))
)

df %>%
  mutate(
    interval = interval(dates - 30, dates),
    dates_in_intv = map_int(interval, function(x) sum(.$dates %within% x))
    )
#>   id      dates                       interval dates_in_intv
#> 1  1 2017-01-15 2016-12-16 UTC--2017-01-15 UTC             1
#> 2  2 2017-01-17 2016-12-18 UTC--2017-01-17 UTC             2
#> 3  3 2017-02-01 2017-01-02 UTC--2017-02-01 UTC             3
#> 4  4 2017-02-12 2017-01-13 UTC--2017-02-12 UTC             4
#> 5  5 2017-03-30 2017-02-28 UTC--2017-03-30 UTC             1
#> 6  6 2017-04-01 2017-03-02 UTC--2017-04-01 UTC             2

reprex包 (v0.2.0)創建於2018-04-13。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM