Sono abbastanza nuovo su R e sto cercando di utilizzare aggregate
per eseguire la modellazione di serie temporali su un dataframe, per oggetto e per ogni metrica nel mio set di dati. Funziona magnificamente, ma trovo che il risultato non sia in un formato molto facile da usare. Mi piacerebbe essere in grado di trasformare i risultati nello stesso formato del dataframe originale.Appiattisci/denormalizza il risultato della funzione di aggregazione R
Utilizzando il set di dati dell'iride come esempio:
# Split into two data frames, one for metrics, the other for grouping
iris_species = subset(iris, select=Species)
iris_metrics = subset(iris, select=-Species)
# Compute diff for each metric with respect to its species
iris_diff = aggregate(iris_metrics, iris_species, diff)
sto solo usando diff
per illustrare che ho una funzione che modella la serie temporale, in modo da ottenere una serie di tempo di durata possibilmente diverso come risultato e sicuramente non un singolo valore aggregato (es. media).
Mi piacerebbe trasformare il risultato, che sembra essere una matrice che ha un elenco di celle con valore al dataframe "piatto" originale.
Sono principalmente curioso di sapere come gestirlo con i risultati da aggregate
, ma sarei ok con soluzioni che fanno tutto in plyr
o reshape
.
Si parla di serie temporali .. e si dà un esempio basato su iris? !! ti aggreghi usando diff? Qual è la logica. Sarebbe meglio usare uno dei pacchetti delle serie temporali (zoo, xts, ..) !! davvero non capisco cosa vuoi fare (ho letto la tua domanda almeno 3 volte) – agstudy
@agstudy, io * penso * la domanda è un po 'da fare con come si comporta l'aggregazione se la dai una funziona come 'summary' o' fivenum' o qualcos'altro che restituirà più di una colonna. In questi casi, il risultato è ciò che * sembra * come un 'data.frame' a più colonne, ma in realtà è una' matrice 'come una colonna in un 'data.frame'. Quindi, un 'do.call (data.frame, ...)' dovrebbe fare il trucco per "appiattire" l'output. – A5C1D2H2I1M1N2O1R2T1
@AnandaMahto ringraziamenti. Ho capito il tuo punto. – agstudy