2016-11-11 5 views
-1

У меня возникают проблемы при попытке рассчитать средний временной интервал (сколько дней) между появлениями одного и того же значения в другом столбце.Как рассчитать средний временной интервал на основе уникального значения?

Мои данные выглядит следующим образом:

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) 

Но он не может вычислять среднее из значений даты. Есть идеи?

+4

Как рассчитывается среднее значение? 23 и 7 не выглядит как среднее. Это просто различия между двумя датами. –

ответ

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 

Я думаю, что это отправная точка для вас ... вы можете изменить, как вы хотите.

+0

«Я думаю, что это отправная точка для вас». Я думаю, что вы смиренны; это выглядит как отличное решение для меня. – rosscova