Я пытался использовать R для очистки некоторых данных. Мой набор данных выглядит так:
DateTime Day ...
2018-10-01 10:00:00 0
2018-10-01 10:00:05 0
2018-10-01 10:00:10 0
2018-10-01 10:00:15 0
2018-10-01 10:00:20 0
2018-10-01 10:00:25 0
2018-10-01 10:00:30 0
2018-10-01 10:00:35 0
Это в 5-секундных бинах, поэтому 24 часа = 17280 бинов. Я пытаюсь добавить столбец Day
, который в основном просто дает значение, начинающееся с начала как 1
, и считает через 24 часа и дает '1,1,1,1,1...1'
для первого дня и '2,2,2,2,2...2'
, начиная с 10:00:00
во второй день за каждый день и проходит весь набор данных.
Итак, мой желаемый результат будет выглядеть примерно так:
DateTime Day
2018-10-01 10:00:00 1
2018-10-01 10:00:05 1
2018-10-01 10:00:10 1
2018-10-01 10:00:15 1
... ... ...
2018-10-02 9:59:50 1
2018-10-02 9:59:55 1
2018-10-02 10:00:00 2
2018-10-02 10:00:05 2
... ... ...
2018-10-03 9:59:50 2
2018-10-03 9:59:55 2
2018-10-03 10:00:00 3
2018-10-03 10:00:05 3
Для этого я придумал код для создания вектора чисел, используя rep()
:
days<- round(nrow(df)/17280)
sdays <- rep(1:days, each = 17280, times = 1)
df$Day <- sdays
Это работает, если дни точно совпадают для 24-часовой длины дня, и мне не нужно было округлять или увеличивать. Однако не каждый набор данных, который я просматриваю, имеет идеальные 24-часовые диапазоны дат, и я предпочитаю не редактировать данные, поскольку каждый блок необходим для того, что я просматриваю. Итак, я пытался найти более подходящий подход для этого, но с небольшим успехом (хотя я уверен, что он где-то в www, так как он довольно простой).