首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用padr加厚日期范围,其中起始值与数据帧中的日期之一相同。

使用padr加厚日期范围,其中起始值与数据帧中的日期之一相同。
EN

Stack Overflow用户
提问于 2020-04-16 17:22:00
回答 1查看 91关注 0票数 1

我不完全确定这是一个bug,还是我真的做错了什么。但我会在这里提出这个问题,然后从那里出发。

假设我们有一个调用数量的虚拟数据集:

代码语言:javascript
复制
df_calls = data.frame(Call_date= c("2019-02-18",
                                    "2019-02-19",                                               
                                    "2019-02-20",                                               
                                    "2019-02-22",                                              
                                    "2019-02-25",                                              
                                    "2019-02-26",                                              
                                    "2019-03-01",                                              
                                    "2019-03-04"),
                      Calls = c(12,4,2,8,1,3,1,8))

我现在想加厚这个数据集,看看每周有多少个呼叫,"2019-02-18"启动

因此,我们有:

代码语言:javascript
复制
starting_day= as.Date("2019-02-18")

现在,我希望在从"2019-02-18"开始到第二天"2019-02-24"的一周内,应该会有12+4+2+8 = 26调用。

让我们看看..。

使用padr库,我使用函数thicken

代码语言:javascript
复制
library(padr)

df_calls_weekly = df_calls %>%
                   mutate(Call_date = as.Date(Call_date)) %>% 
                   thicken("week",colname = "Date_Week" ,start_val = starting_day) %>%
                   group_by(Date_Week) %>%  
                   summarise(Num_calls = sum(Calls)) %>%
                   ungroup()

看看df_calls_weekly,我们有以下输出:

代码语言:javascript
复制
    # A tibble: 3 x 2
      Date_Week  Num_calls
      <date>         <dbl>
    1 2019-02-18        14
    2 2019-02-25         5
    3 2019-03-04         8

我们似乎得到了一个不同的答案,即从"2019-02-18"开始的一周内,我们会接到14的电话。不是26岁?

在调查时,我看到在查看thicken如何创建数据帧时,它似乎删除了Call_date == "2019-02-18"所在的行。您可以在这里清楚地看到:

代码语言:javascript
复制
df_calls_weekly = df_calls %>%
  mutate(Call_date = as.Date(Call_date)) %>% 
  thicken("week",colname = "Date_Week" ,start_val = starting_day) %>%
  filter(Date_Week ==starting_day )

产出:

代码语言:javascript
复制
   Call_date Calls  Date_Week
1 2019-02-19     4 2019-02-18
2 2019-02-20     2 2019-02-18
3 2019-02-22     8 2019-02-18

无论出于什么原因,它都忽视了Call_date of "2019-02-18"。我认为这与调用日期与在start_val函数中指定的thicken日期相同这一事实有关。

如果有人知道如何使加厚包含与thicken中的起始日期参数相同的日期,我将非常感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-16 18:45:14

start_valthicken的参数是:

默认情况下,

是低于输入日期时间变量最低值的间隔的第一个实例,默认值为所有时间单位。

假定所有其他值都严格大于start_val的函数,但是最低值等于start_val,因此忽略那些最低值。

这里有一个解决办法:

代码语言:javascript
复制
df_calls = data.frame(Call_date= c("2019-02-18",
                                   "2019-02-19",                                               
                                   "2019-02-20",                                               
                                   "2019-02-22",                                              
                                   "2019-02-25",                                              
                                   "2019-02-26",                                              
                                   "2019-03-01",                                              
                                   "2019-03-04"),
                      Calls = c(12,4,2,8,1,3,1,8))

starting_day= as.POSIXct("2019-02-17 23:59:59") # a second before the minimum date
library(tidyverse)
library(padr)

df_calls_weekly = df_calls %>%
  mutate(Call_date = as.Date(Call_date)) %>% 
  thicken("week",colname = "Date_Week", start_val = starting_day) %>% 
  group_by(Date_Week) %>%  
  summarise(Num_calls = sum(Calls)) %>%
  ungroup() %>%
  mutate(Date_Week = Date_Week + 1) # add the missing second back in
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61256217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档