Рассчитать среднюю разницу в днях между датами в одном столбце и связанным стандартным отклонением - PullRequest
0 голосов
/ 04 января 2019

Я начинаю программировать на R, и я не нашел решения этой проблемы.

У меня есть данные, сохраненные в кадре данных, как показано ниже:

        Material created_date
1    50890000   29/10/2018
2    50890000   17/10/2018
3    50890000   31/05/2018
4    50890000   08/02/2018
5    50890000   09/01/2018
6    50900000   21/12/2018
7    50900000   27/09/2018
8    50900000   24/08/2018
9    50900000   18/05/2018
10   51200000   13/07/2018
11   51210001   08/08/2018
12   51210001   26/07/2018
13   51210001   27/02/2018
14   51210001   17/01/2018
15   51210001   09/01/2018
16   51210002   29/08/2018
17   51210002   08/08/2018
18   51210002   13/04/2018

Я хотел бы рассчитать 4 столбца:

  • Средняя разница между последовательными датами в днях
  • Стандартное отклонение, связанное
  • Средняя разница между последовательными датами в рабочих днях
  • Стандартное отклонение, связанное

Мне сказали использовать plyr или dplyr, но когда я начинаю, я не уверен, как вычислить желаемый результат.

Спасибо,

Ответы [ 2 ]

0 голосов
/ 05 января 2019

Вот подход dplyr к первым двум из ваших остроконечных вопросов:

df <- df %>% 
  mutate(
    created_date = as.Date(created_date, "%d/%m/%Y"),
    diff = as.integer(created_date - lag(created_date)))
df %>% 
  summarise(n = n(), mval = mean(diff, na.rm = T), std = sd(diff, na.rm = T))

   n      mval      std
1 18 -11.70588 128.4916

Проверьте ссылку в комментариях, которую я оставил вам о количестве рабочих дней, и попробуйте объединить эти методы, чтобы ответить на ваши вторые две марки

0 голосов
/ 05 января 2019

Во-первых, вам нужно изменить дату_оздания на дату, которую понимает Р. Сделайте это с:

df$R_date <- as.Date(df$created_date, "%d/%m/%Y")

Теперь, если вы просто хотите вычислить разницу между датами, цикл (избегаемый многими) может работать:

for (i in 2:nrow(df)) {
  df$date_diff[i] <- as.integer(df$R_date[i]-df$R_date[i-1])
}

Однако, учитывая вашу ссылку на dplyr, мне интересно, хотите ли вы сделать это для каждой группы материалов ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...