Chcę wybrać ostatnie pozycje n
z szeregu czasowego. Mogę użyć operatora [
, ale tracę atrybuty szeregów czasowych danych:Wybieranie ostatnich n pozycji w szeregu czasowym
data <- ts(1:10, frequency = 4, start = c(1959, 2))
data[(length(data)-4):length(data)]
pisałem funkcji otoki do ponownego zastosowania czas atrybutów serii, ale zastanawiałem się, czy nie było więcej elegancki sposób to zrobić?
lastN <- function(data,n) {
out <- data[(length(data)-n+1):length(data)]
ts(out, end=end(data), frequency=frequency(data))
}
data
lastN(data,5)
Dlaczego operator [
nie zwraca obiektu szeregów czasowych?
Lub po prostu użyj 'tail (data_zoo, 5)'. –
To działa na razie. Wolałbym móc indeksować obiekty 'ts' bezpośrednio, ale konwersja do/z zoo po prostu dodaje 2 dodatkowe kroki i wydaje się być warta z punktu widzenia łatwości użycia. – Zach
Dzięki wspaniałej sugestii @ JoshuaUlrich staje się ona znacznie czystsza i może być czytelna jako jedna linijka. 'lastN <-tail (as.zoo (data), N)' –