【发布时间】:2018-09-10 11:11:26
【问题描述】:
我有一系列日期(它们是类日期)代表某人做某事的日期:
mytimes = as.Date(c("2014-08-15", "2014-08-29", "2014-08-01", "2014-09-19", "2014-10-31"))
我怎样才能计算这些日期之间的时间,然后还计算日期之间的中位时间?
例如,我可以计算最早日期之后的天数:
> sort(mytimes) - min(mytimes)
Time differences in days
[1] 0 14 28 49 91
但我想得到间隔:0 14 14 21 42
我有一个 data.frame,其中有多个用户/人员,他们每次登录系统时都有一个条目。我想总结一下登录之间的时间间隔。我希望有一些不错的方法来做到这一点......我可以通过计算总时间并除以我的条目数来计算平均时间,但我也想要实际分布、中位数等。理想情况下,我可以使用 dplyr 来汇总按用户分组的数据。
编辑:我刚刚发现了滞后
因此,我可以这样做:
dataset <- data.frame(ID = c(rep(1, 5), rep(2, 5)), times = rep(mytimes, 2))
dataset %>%
arrange(ID, times) %>%
group_by(ID) %>%
mutate(diff_shift = times - lag(times))
# A tibble: 10 x 3
# Groups: ID [2]
ID times diff_shift
<dbl> <date> <time>
1 1.00 2014-08-01 <NA>
2 1.00 2014-08-15 14
3 1.00 2014-08-29 14
4 1.00 2014-09-19 21
5 1.00 2014-10-31 42
6 2.00 2014-08-01 <NA>
7 2.00 2014-08-15 14
8 2.00 2014-08-29 14
9 2.00 2014-09-19 21
10 2.00 2014-10-31 42
【问题讨论】:
标签: r