R 如何根据唯一值计算平均时间间隔?

R 如何根据唯一值计算平均时间间隔?,r,time,aggregate,intervals,R,Time,Aggregate,Intervals,当我试图计算另一列中相同值出现之间的平均时间间隔(多少天)时遇到问题 我的数据如下所示: 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

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

我的数据如下所示:

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
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
我想得到这样的东西:

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
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
我尝试使用:

 aggregate(dt~subject_id, data, mean)

但它不能根据日期值计算平均值。有什么想法吗?

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

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
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
df$dt%
分组人(受试者id)%>%
总结((最大(dt)-最小(dt))/(n()-1))
#                                  
#1113.0天
#24123.0天
#377天
#484天
#5天
#6937.0天
#7947.5天
#8天
#91332南日
#101791南日

我想这是你的一个起点。。。您可以根据需要进行修改。

平均值是如何计算的?23号和7号看起来并不平均。它们只是两次约会之间的差异。“我想这是你的起点”。我觉得你很谦虚;这对我来说似乎是一个很好的解决方案。