обработка даты и времени в R - PullRequest
2 голосов
/ 01 марта 2011

Уважаемые все, у меня есть фрейм данных, который поступает непосредственно от датчика.Данные предоставляют дату и время в одном столбце.Я хочу, чтобы R мог распознать эти данные, а затем создать смежный столбец во фрейме данных, который дает число, соответствующее новому дню в столбце времени и даты.Например, 25.02.2011 13:34 в данных $ time.date даст 1 в новом столбце данных $ день, а 26.02.2011 13:34 в данных $ time.date получит 2 и так далее ....

Кто-нибудь знает, как решить эту проблему?Заранее спасибо за любую помощь.

Ответы [ 2 ]

4 голосов
/ 01 марта 2011

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

> sdate <- as.POSIXlt("25/02/2011 13:34", format = "%d/%m/%Y %H:%M")
> edate <- as.POSIXlt("02/03/2011 13:34", format = "%d/%m/%Y %H:%M")
> df <- data.frame(dt = seq(from = sdate, to = edate, by = "hours"))
> head(df)
                   dt
1 2011-02-25 13:34:00
2 2011-02-25 14:34:00
3 2011-02-25 15:34:00
4 2011-02-25 16:34:00
5 2011-02-25 17:34:00
6 2011-02-25 18:34:00

Мы сокращаем столбец даты и времени на дни, используя cut(). Это приводит к коэффициенту с датами в качестве меток. Мы конвертируем этот коэффициент в числа, чтобы получить 1, 2, ...:

> df <- within(df, day <- cut(dt, "day", labels = FALSE)))
> head(df, 13)
                    dt day
1  2011-02-25 13:34:00   1
2  2011-02-25 14:34:00   1
3  2011-02-25 15:34:00   1
4  2011-02-25 16:34:00   1
5  2011-02-25 17:34:00   1
6  2011-02-25 18:34:00   1
7  2011-02-25 19:34:00   1
8  2011-02-25 20:34:00   1
9  2011-02-25 21:34:00   1
10 2011-02-25 22:34:00   1
11 2011-02-25 23:34:00   1
12 2011-02-26 00:34:00   2
13 2011-02-26 01:34:00   2
3 голосов
/ 01 марта 2011

Вы можете добиться этого, используя cut.POSIXt.Например:

dat <- data.frame(datetimes = Sys.time() - seq(360000, 0, by=-3600))
dat$day <- cut(dat$datetimes, breaks="day", labels=FALSE)

Обратите внимание, что предполагается, что ваш столбец даты и времени корректно отформатирован как класс даты и времени.

Подробнее см. ?DateTimeClasses.

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