2015-03-20 2 views
-4

Я имею следующие данные в следующем формате.Дата данные в R

x <- c("2012-03-01T00:05:55+00:00", "2012-03-01T00:06:23+00:00", 
      "2012-03-01T00:06:52+00:00") 

Фактические данные очень длинные.

Моя цель

  • конвертировать их в почасовой временных рядов в R
  • агрегировать мои данные почасовых данных
+0

Просьба выполнить поиск по функциям времени R. Определите, что такое «почасовой временной ряд». Предоставьте «данные» для агрегации и укажите агрегирующие функции. –

ответ

1

Сначала конвертировать ваши даты в даты-времени класса с использованием asPOSIXct

df = data.frame(x = c("2012-03-01T00:05:55+00:00", "2012-03-01T00:06:23+00:00", 
       "2012-03-01T00:06:52+00:00")) 

df$times = as.POSIXct(df$x, format = "%Y-%m-%dT00:%H:%M+%S") 

Затем вытяните только часть часа, используя format

df$hour = format(df$times, '%H') 

Это дает вам:

      x    times hour 
1 2012-03-01T00:05:55+00:00 2012-03-01 05:55:00 05 
2 2012-03-01T00:06:23+00:00 2012-03-01 06:23:00 06 
3 2012-03-01T00:06:52+00:00 2012-03-01 06:52:00 06 

Или вы можете извлечь дату и час с помощью:

df$date_hour = format(df$times, '%Y-%m-%d:%H') 

для более Infor см ?strftime он говорит «Спецификация преобразования введенный%, обычно за которым следует одна буква или O или E, а затем одна буква. Любой символ в строке формата, не являющийся частью спецификации преобразования, интерпретируется буквально (и %% дает%). Широко реализуемые спецификации преобразования включают: ...% H Часы в виде десятичного числа (00-23). В качестве специальных строк исключений, таких как 24:00:00 принимаются для ввода, так как ISO 8601 позволяет это.»

Теперь вы можете делать любые aggregartion вы хотите использовать что-то вроде plyr::ddply

library(plyr) 
ddply(df, .(hour), nrow) 

    hour V1 
1 05 1 
2 06 2 

или

ddply(df, .(date_hour), nrow) 
     date_hour V1 
1 2012-03-01:05 1 
2 2012-03-01:06 2