Сортировка Столбец дат в R - PullRequest
0 голосов
/ 11 ноября 2018

У меня есть датафрейм со столбцом даты. Эти даты представляют дату, когда фактический результат опроса был фактически взят. Тем не менее, веб-сайт берет эти результаты и добавляет их в таблицу не обязательно в день проведения опроса. Так, например:

  • 20/01/2018
  • 21/01/2018
  • 20/01/2018
  • 19/01/2018

поэтому дата вверху (20/01/2018) пришла в после даты ниже. Но в приведенном ниже опросе указано 21-е, и это дата, когда был проведен опрос, поэтому самая ранняя дата, которую можно было добавить вышеупомянутым, является 21-м, поэтому список становится следующим:

  • 21/01/2018
  • 21/01/2018
  • 19/01/2018

и теперь моя колонка отсортирована. Мне нужно сделать это для примерно 50 переменных! Предложения? Я хочу отсортировать столбец дат так, чтобы, если бы я перешел снизу вверх, если у даты была более поздняя дата, то эта дата также стала более поздней. введите описание изображения здесь

1 Ответ

0 голосов
/ 12 ноября 2018

Возможно, есть более красивый способ, но это должно дать желаемый результат:

data$Date <- as.POSIXct(rev(cummax(rev(as.numeric(data$Date)))), origin = "1970-01-01")

Идея состоит в том, что вам нужен скользящий максимум снизу вверх, например, когда достигнут 2018-01-02, в строках выше не может быть дата, которая "меньше", чем 2018-01-02. Это делается с помощью функции cummax. Он содержит максимальную достигнутую дату и перезаписывает более ранние / меньшие даты. Поскольку вы хотите, чтобы он шел снизу вверх, вы должны повернуть свой столбец даты с помощью rev и затем повернуть его обратно после вызова cummax. Поскольку cummax работает только для ввода numeric, я преобразовал ваш столбец даты в числовое значение и обратно в date в конце.

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