2012-02-04 2 views
4

С учетом даты я могу получить доступ к соответствующему элементу в векторе зоопарка. Например:R: Подмножество объекта зоопарка?

z[as.POSIXct(1213708500, origin="1970-01-01")] 

это возвращает

2008-06-17 14:15:00 
      -8.28123 

Я хотел бы получить вектор 30 последовательных элементов (заканчивающихся с элементом выше).

Как это сделать (эффективно), не зная метку времени стартового элемента?

Я знаю, что могу сделать это с помощью функции window, но для этого требуется время начала и время окончания.

+0

Вы пытаетесь выполнить расчеты? Если это так, см. '? Rollapply' –

ответ

4

использовать что-то вроде

ind <- which(index(z)==as.POSIXct(1213708500, origin="1970-01-01")) + seq(-29,0) 

следует

z[ind] 

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

+0

Большое спасибо! Не могли бы вы рассказать мне, если вместо метки времени (1213708500) у меня есть вектор временных меток, как я могу вернуть матрицу в 'ind'? –

+1

Hm, который может «просто» быть нормальной проблемой индексации векторных значений. Попробуйте найти 'help (match)'/'help ("% in% ")'. Кроме того, мне очень нравится пакет xts для его индексации, где вы говорите что-то вроде 'x [" 2010-01 :: 2010-06 "]', чтобы получить шесть месяцев, и idem за час/мин/сек/... и т. Д. В конечном счете, это лучше, потому что в том, что мы обсуждаем здесь, вы все равно зависите от равенства. Это говорит, что 'min (который (...> = ...))' тоже будет работать, я полагаю. –

Смежные вопросы