分组总结R中的日期差异

问题描述 投票:0回答:2

我正在尝试使用group_by,然后使用日期差异计算进行汇总。我不确定它是运行时错误还是我正在做的事情。有时,当我运行代码时,我将输出作为天数,其他时间作为秒。我不确定是什么导致了这种变化。我没有改变数据集或代码。我使用的数据集很大(2,304,433行和40列)。两个时间,输出值(数字)都相同,但只有名称更改(天到秒)。我想在几天内看到输出。这是我正在使用的代码:

data %>% 
group_by(PRODUCT,PERSON_ID) %>% 
summarise(Freq = n(),
          Revenue = max(TOTAL_AMT + 0.000001/QUANTITY), 
          No_Days = (max(ORDER_DT) - min(ORDER_DT) + 1)/n())

这是output

有人可以帮我这个吗?

r group-by date-difference
2个回答
1
投票

使用difftime()您可能需要指定单位。

set.seed(314)
data <- data.frame(PRODUCT = sample(1:10, size = 10000, replace = TRUE),
                   PERSON_ID = sample(1:10, size = 10000, replace = TRUE),
                   ORDER_DT = as.POSIXct(as.Date('2019/01/01') + sample(-300:+300, size = 10000, replace = TRUE)))


require(dplyr)

data %>% 
  group_by(PRODUCT,PERSON_ID) %>% 
  summarise(Freq = n(),
            start = min(ORDER_DT), 
            end = max(ORDER_DT)) %>%
  mutate(No_Days = (as.double(difftime(end, start, units = "days"), units = "days")+1)/Freq)

得到:

PRODUCT PERSON_ID  Freq start               end                 No_Days
<int>     <int> <int> <dttm>              <dttm>                <dbl>
1       1         1   109 2018-03-21 01:00:00 2019-10-27 02:00:00    5.38
2       1         2   117 2018-03-23 01:00:00 2019-10-26 02:00:00    4.98
3       1         3   106 2018-03-19 01:00:00 2019-10-28 01:00:00    5.56
4       1         4   109 2018-03-07 01:00:00 2019-10-26 02:00:00    5.50
5       1         5    95 2018-03-07 01:00:00 2019-10-16 02:00:00    6.2 
6       1         6    79 2018-03-09 01:00:00 2019-10-04 02:00:00    7.28
7       1         7    83 2018-03-09 01:00:00 2019-10-28 01:00:00    7.22
8       1         8   114 2018-03-09 01:00:00 2019-10-16 02:00:00    5.15
9       1         9   100 2018-03-09 01:00:00 2019-10-13 02:00:00    5.84
10      1        10    91 2018-03-11 01:00:00 2019-10-26 02:00:00    6.54
# ... with 90 more rows        

-1
投票

为什么值除以n()?

简单的as.integer(max(ORDER_DT) - min(ORDER_DT))应该工作,但如果没有,那么请更具体,并提供更多信息更新我。

在使用datetime值时,最好知道lubridate库

© www.soinside.com 2019 - 2024. All rights reserved.