2010-04-05 25 views
6

È necessario utilizzare una funzione su un vettore che non accetta un oggetto ts. Sto provando a convertirlo in un semplice vecchio vettore, ma non riesco a capirlo. Ho cercato su google, ma la maggior parte delle persone sta cercando di convertire i tipi di dati in oggetti ts. Voglio andare dall'altra parte Qualsiasi aiuto sarebbe apprezzato.Conversione di un oggetto ts (Serie storica) in un vettore in R

risposta

13
data(AirPassengers) # already in your R installation, via package "datasets" 
AP = AirPassengers  
class(AP) 
# returns "ts" 

AP1 = as.numeric(AP) 
# returns "numeric" 

# another way to do it 
AP1 = unclass(AP) 

AP1 è un vettore con gli stessi valori e lunghezza come AP. La classe è ora numerica invece di ts, il che significa, in parte, che gli indici non sono più una sorta di oggetto data-ora ma solo numeri interi sequenziali ordinari.

Quindi w/r/t la questione specifica nel PO, uno dei due frammenti di sopra volontà "convertito [un oggetto ts] per una pianura vecchio vettore"

Se avete bisogno di fare lo stesso cosa con gli indici piuttosto che, o in aggiunta a, i valori - vale a dire, da oggetti Date a numerico, si può fare in questo modo:

fnx = function(num_days_since_origin, origin="1970-01-01") { 
    as.Date(num_days_since_origin, origin="1970-01-01") 
} 

a = as.Date("1985-06-11") 
a2 = as.numeric(a) 
# returns: 5640 
a3 = fnx(5640) 
# returns: "1985-06-11" (a date object) 
+0

+1 amo unclass. È un ottimo modo per ispezionare il contenuto di un oggetto in R. –

+1

Seriamente? as.numeric (AirPassengers) restituisce il valore campionato in quella data, non la data stessa. Per favore, per favore, dimostri invece come ottenere secondi dall'epoca dai dati! –

Problemi correlati