【问题标题】:How to calculate average time interval based on unique value?如何根据唯一值计算平均时间间隔?
【发布时间】:2017-03-25 15:47:27
【问题描述】:

我在尝试计算另一列中出现相同值的平均时间间隔(多少天)时遇到了问题。

我的数据如下所示:

dt      subject_id
2016-09-13         77
2016-11-07       1791
2016-09-18       1332
2016-08-31         84
2016-08-23         89
2016-08-23         41
2016-09-15         41
2016-10-12         93
2016-10-05         93
2016-11-09         94
2016-10-25         94
2016-11-03         94
2016-10-09        375
2016-10-14         11
2016-09-27         11
2016-09-13         11
2016-08-23         11
2016-08-27         11

我想得到这样的东西:

subject_id  mean_day
41          23
93          7
94          7.5
11          13

我尝试使用:

 aggregate(dt~subject_id, data, mean)

但它无法从日期值计算平均值。有什么想法吗?

【问题讨论】:

  • 均值是如何计算的? 23 和 7 看起来并不平均。它们只是两个日期之间的差异。

标签: r time aggregate intervals


【解决方案1】:

我的第一种方法是这样的:

df$dt <- as.Date(df$dt)

library(dplyr)

df %>% 
  group_by(subject_id) %>%
    summarise((max(dt) - min(dt))/(n()-1))
#        <int>                          <time>
#1          11                       13.0 days
#2          41                       23.0 days
#3          77                        NaN days
#4          84                        NaN days
#5          89                        NaN days
#6          93                        7.0 days
#7          94                        7.5 days
#8         375                        NaN days
#9        1332                        NaN days
#10       1791                        NaN days

我认为这对你来说是一个起点……你可以随意修改。

【讨论】:

  • “我认为这是你的起点”。我认为你很谦虚;这对我来说似乎是一个很好的解决方案。
猜你喜欢
  • 2019-08-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-31
相关资源
最近更新 更多