gpt4 book ai didi

r - 每周第二个星期二结束的 2 周总和

转载 作者:行者123 更新时间:2023-12-04 01:19:16 25 4
gpt4 key购买 nike

我有一些数据,其格式类似于下面的可重现示例(问题下方的数据输入代码,最后)。两件事:

  1. 并非所有日期都有值(即许多日期缺失)。
  2. 有些日期有多个值,例如 2020 年 6 月 16 日。
#>        date value
#> 1 30-Jun-20 20
#> 2 29-Jun-20 -100
#> 3 26-Jun-20 -4
#> 4 16-Jun-20 -13
#> 5 16-Jun-20 40
#> 6 9-Jun-20 -6

在周二结束的两周内,我想对 value 列求和。

所以在上面的示例数据中,我想求和结束于:

  • 2020 年 6 月 16 日星期二结束的两周(即 2020 年 6 月 3 日至 2020 年 6 月 16 日,包括首尾两天)
  • 2020 年 6 月 30 日星期二结束的两周(2020 年 6 月 17 日 - 2020 年 6 月 30 日,包括首尾两日)
  • 我最终希望代码能够在每个第二个星期二结束的所有两周时间段内继续求和,以备有更多数据时使用。

所以我想要的输出是:

#2_weeks_end     total
#30-Jun-20 -84
#16-Jun-20 21

Tidyverse 和 lubridate 解决方案将是我的首选。

数据输入代码如下:

df <- data.frame(
stringsAsFactors = FALSE,
date = c("30-Jun-20","29-Jun-20",
"26-Jun-20","16-Jun-20","16-Jun-20","9-Jun-20"),
value = c(20L, -100L, -4L, -13L, 40L, -6L)
)
df

最佳答案

使用 findInterval() 的解决方案。

df$date <- dmy(df$date)
df_intervals <- seq(as.Date("2020-06-03"), as.Date("2020-06-03")+14*3, 14)

df %>%
mutate(interval = findInterval(date, df_intervals)) %>%
mutate(`2_weeks_end` = df_intervals[interval+1]-1) %>%
group_by(`2_weeks_end`) %>%
summarise(total= sum(value))

返回:

# A tibble: 2 x 2
2_weeks_end total
<date> <int>
1 2020-06-16 21
2 2020-06-30 -84

关于r - 每周第二个星期二结束的 2 周总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62846461/

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