gpt4 book ai didi

r - 计算R中间隔内的日期

转载 作者:行者123 更新时间:2023-12-04 12:09:39 24 4
gpt4 key购买 nike

给定一组如下日期加上在每个日期结束的 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

创建于 2018-04-13 由 reprex package (v0.2.0)。

关于r - 计算R中间隔内的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49822527/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com