2010-11-09 2 views
3

У меня есть ряд зоопарков, которые используют индекс POSIXct.R: Агрегация по датам с POSIXct?

Для того, чтобы агрегировать по дням я попробовал эти два пути:

aggregate(myzoo,format((index((myzoo)),"%Y-%m-%d")),sum) 

aggregate(myzoo,as.Date(index(myzoo)),sum) 

Я не знаю, почему они не дают тот же результат. В серии myzoo выходные были удалены. Кажется, что путь «as.Date» в порядке, но агрегация «формат» дает мне данные по выходным.

Почему?

Какой из них является правильным?

Я даже пробовал as.POSIXct(format(...))

+0

Есть ли у вас данные с временными метками? Просьба представить образец данных. У вас могут быть временные интервалы в объекте POSIXct, которые затем меняют ваши данные. – Shane

+0

Рассмотрите 'format()' как плохое и потерянное преобразование для дат. Не используйте его. Это может быть удобно, и вы сможете отсортировать выбранный вами формат, но это не очень хорошая репрезентация для дат. –

+0

Привет. strptime вместо этого? Я не предоставляю данные, потому что я использую большие файлы и немного сложнее. – skan

ответ

2

Как я уже упоминал в своем комментарии, вы должны быть осторожны при изменении формата метки времени, которая включает в себя время с часовым поясом, потому что она может сдвигаются между днями. Без каких-либо данных, то трудно сказать, что именно ваша проблема, но вы можете также попробовать apply.daily из xts:

apply.daily(myzoo, sum) 

Вот рабочий пример:

> x <- zoo(2:20, as.POSIXct("2003-02-01") + (2:20) * 7200) 
> apply.daily(x, sum) 
> 2003-02-01 22:00:00 2003-02-02 16:00:00 
       65     144 
Смежные вопросы