【问题标题】:Summarize Dates总结日期
【发布时间】:2020-11-17 21:00:28
【问题描述】:

我想总结周一到周一的日期,但周六和周日累积到周五

## A tibble: 10 x 2
#date        value
#<date>      <dbl>
#  1 2020-01-02  1     --- Thurs
#2 2020-01-03 1        --- Fri
#3 2020-01-04  2       --- Sat
#4 2020-01-06  1       --- Mon
#5 2020-01-07  1       --- Tues
#6 2020-01-08 1        --- Wed
#7 2020-01-09  1       --- Thurs
#8 2020-01-10  1       --- Fri
#9 2020-01-11  2       --- Sat
#10 2020-01-13 1       --- Mon

这就是我想要的

#date        value
#<date>      <dbl>
#  1 2020-01-02  1     --- Thurs
#2 2020-01-03 3        --- Fri
#4 2020-01-06  1       --- Mon
#5 2020-01-07  1       --- Tues
#6 2020-01-08 1        --- Wed
#7 2020-01-09  1       --- Thurs
#8 2020-01-10  3       --- Fri
#10 2020-01-13 1       --- Mon

数据

dd = structure(list(date = structure(c(18263, 18264, 18265, 18267, 18268, 18269, 18270, 18271, 18272, 18274), class = "Date"), value = c(1, 1, 2, 1, 1, 1, 1, 1, 2, 1)), row.names = c(NA, -10L), class = c("tbl_df", "tbl", "data.frame"))

【问题讨论】:

    标签: r dplyr lubridate


    【解决方案1】:

    我们可以使用weekdaysreplace 周末的“日期”到NA,然后fill NAs 与之前的非NA 元素(假设“日期”已经arranged,然后做一个group_by sum

    library(dplyr)
    library(tidyr)
    dd %>% 
        mutate(Weekday = weekdays(date),
              date = replace(date, Weekday %in% c("Saturday", "Sunday"), NA)) %>% 
        fill(date) %>% 
        group_by(date) %>% 
        summarise(value = sum(value), .groups = 'drop')
    

    -输出

    # A tibble: 8 x 2
    #  date       value
    #  <date>     <dbl>
    #1 2020-01-02     1
    #2 2020-01-03     3
    #3 2020-01-06     1
    #4 2020-01-07     1
    #5 2020-01-08     1
    #6 2020-01-09     1
    #7 2020-01-10     3
    #8 2020-01-13     1
    

    【讨论】:

    • 你的代码在我的电脑上不起作用&gt; packageVersion("dplyr") [1] ‘1.0.2’ &gt; packageVersion("tidyr") [1] ‘1.1.2’
    • @cdcarrion 我和你有相同的版本packageVersion('dplyr')# [1] ‘1.0.2’ &gt; packageVersion('tidyr')# [1] ‘1.1.2’
    • @cdcarrion 如果你能显示错误信息,那将非常有帮助
    • 运行你的代码时我有# A tibble: 10 x 2而不是# A tibble: 8 x 2
    • @cdcarrion 是否在同一个“dd”数据集上
    猜你喜欢
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-18
    • 2012-11-21
    • 1970-01-01
    • 2023-04-08
    相关资源
    最近更新 更多