Je dois utiliser une fonction sur un vecteur qui ne prend pas un objet ts. J'essaye de le convertir en un vieux vecteur simple mais je n'arrive pas à le comprendre. J'ai fait des recherches sur google, mais la plupart du temps, les gens essaient de convertir les types de données en objets ts. Je veux aller dans l'autre sens. Toute aide serait appréciée.Conversion d'un objet ts (série temporelle) en vecteur dans R
6
A
Répondre
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 est un vecteur avec les mêmes valeurs et la longueur AP. La classe est maintenant numérique au lieu de ts, ce qui signifie, en partie, que les index ne sont plus une sorte d'objet date-heure mais simplement des entiers séquentiels ordinaires.
Alors w/r/t la question spécifique dans l'OP, ou l'autre des deux extraits ci-dessus va « convertir [un objet ts] à un bon vieux vecteur »
Si vous devez faire la même chose chose avec les indices plutôt que, ou en plus, les valeurs - à savoir, à partir d'objets de date à numérique, vous pouvez le faire comme ceci:
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)
+1 J'adore unclass. C'est un excellent moyen d'inspecter le contenu d'un objet dans R. –
Sérieusement? as.numeric (AirPassengers) renvoie la valeur échantillonnée à cette date, et non la date elle-même. S'il vous plaît, veuillez montrer comment obtenir des secondes depuis l'époque des données à la place! –