2017-02-12 10 views
1

У меня есть кадр данных, который выглядит, как этосоздавая часовые интервалы в R

Count  Time 
    85  00:00:00 
    86  00:15:00 
    87  00:30:00 
    88  00:45:00 
    89  01:00:00 
    90  01:15:00 
    91  01:30:00 

интервалов являются каждые 15 минут, я хотел бы агрегировать раз через каждые 60 минут, а затем взять среднее количество для каждого час. В идеале мой вывод был бы в кадре данных. Спасибо

РЕДАКТИРОВАТЬ: это может быть возможно только при среднем количестве каждых четырех рядов? Если кто-то знает, как это сделать.

+0

@db я в конечном итоге извлечения '-05: 00' и надеюсь, что это поможет с ясностью вопросов – Amanda

ответ

1

ДАННЫЕ

df = structure(list(Count = 85:91, Time = c("00:00:00", "00:15:00", 
"00:30:00", "00:45:00", "01:00:00", "01:15:00", "01:30:00"), 
    hour = c("00", "00", "00", "00", "01", "01", "01")), .Names = c("Count", 
"Time", "hour"), row.names = c(NA, -7L), class = "data.frame") 

первых извлечь час от времени и использовать его в качестве группировки переменного для вычисления означает использование совокупного

df$hour = sapply(strsplit(df$Time,":"), function(x) x[1]) 
aggregate(df[,'Count'], list(df$hour), mean) 
# Group.1 x 
#1  00 86.5 
#2  01 90.0 
+0

спасибо за ваш вклад. Пример, который я использовал выше, - очень маленький фрагмент моего df. У меня уже есть кадр данных с именем 'df' с столбцами' count' и 'time', и я не уверен, как включить первую часть вашего кода (' df = structure (list ... ') в мой код – Amanda

+0

, когда я запустите это, я получаю эту ошибку: 'Ошибка в strsplit (df $ Time,": "): несимвольный аргумент' вы знаете, как это исправить? – Amanda

+2

@Amanda -' df $ Time <- as.character (df $ Time) 'your' Time' column - это фактор, который я угадываю, а 'strsplit' нуждается в символьной строке для работы. – thelatemail