我正在尝试使用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。
有人能在这方面帮我一下吗?
发布于 2019-03-18 16:20:40
使用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 发布于 2019-03-18 07:33:30
为什么这个值除以n()
简单的as.integer(max(ORDER_DT) - min(ORDER_DT))应该可以工作,但如果它不是,那么请更具体,并更新我与更多的信息。
此外,在使用DateTime值时,最好了解lubridate库
https://stackoverflow.com/questions/55212854
复制相似问题