2013-07-09 3 views
0

Мои данные похожи на этого парня внизу.лучший способ извлечь количество уникальных дней в объект зоопарка

> head(data) 
        open high low close 
2013-06-20 09:31:00 275.50 276.00 275.08 275.65 
2013-06-20 09:32:00 275.61 276.88 275.61 276.67 
2013-06-20 09:33:00 276.67 276.72 275.95 276.62 
2013-06-20 09:34:00 276.48 277.43 276.27 277.00 
2013-06-20 09:35:00 277.00 278.00 277.00 278.00 
2013-06-20 09:36:00 277.83 277.97 276.58 277.29 

я получаю количество уникальных дней, введя в этом:

length(levels(as.factor(floor(as.numeric(julian(index(data))))))) 

Есть ли лучший способ сделать это? Мне жаль, что не было функции numdays.zoo() или чего-то еще.

+1

, чтобы воспроизвести просто ваш объект зоопарка, вы должны использовать что-то вроде 'dput (head (data))' в следующий раз. – agstudy

ответ

1

Я хотел бы использовать xts::ndays

library(xts) 
ndays(data) 

Но если вы не хотите, чтобы загрузить другой пакет, вы можете просто сделать это

length(unique(as.Date(time(data)))) 
+0

Возможно, я должен работать с объектами xts вместо ... – Taylor

+0

Возможно, но, как вы можете видеть, многие функции из ** xts ** отлично работают на объектах 'zoo'. – GSee

0

Вы можете превратить индексировать в формат дня и использования table:

table(format(index(data),'%y-%m-%d')) 
13-06-20 
     6 

Тогда количество дней, например:

length(names(table(format(index(data),'%y-%m-%d')))) 
Смежные вопросы