Jestem całkiem nowy dla R i próbuję użyć aggregate
do wykonania kształtowania serii czasowych na ramce danych, na temat i dla każdej metryki w moim zestawie danych. Działa to pięknie, ale uważam, że wynik nie jest w formacie, który jest bardzo łatwy w użyciu. Chciałbym móc przekształcić wyniki z powrotem do tego samego formatu, co oryginalna ramka danych.Spłaszczanie/denormalizowanie wyniku funkcji agregującej R
Używanie zestawu danych przysłony jako przykład:
# 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)
Ja tylko używając diff
celu zilustrowania, że mam funkcję, która kształtuje szereg czasowy, więc dostaję szereg czasowy możliwie różnej długości w postaci wynik i zdecydowanie nie ma jednej wartości zagregowanej (np. średnia).
Chciałbym przekształcić wynik, który wydaje się być matrycą, która ma komórki z wartościami na liście, do pierwotnej "płaskiej" ramki danych.
Jestem w większości ciekawa, jak sobie z tym poradzić z wynikami z aggregate
, ale byłbym w porządku z rozwiązaniami, które robią wszystko w plyr
lub reshape
.
Mówisz o szeregach czasowych .. i podajesz przykład oparty na tęczówce? !! zagregujesz używając diff? jaka jest racjonalność ... lepiej byłoby użyć jednego z pakietów szeregów czasowych (zoo, xts, ..) !! Naprawdę nie rozumiem, co chcesz zrobić. (Czytam twoje pytanie co najmniej 3 razy) – agstudy
@agstudy, myślę, że * pytanie jest trochę związane z zachowaniem się 'agregatu' jeśli dasz mu działają jak 'summary' lub' fivenum' lub coś innego, co zwróci więcej niż jedną kolumnę. W takich przypadkach wynikiem jest * to, co * wygląda * jak wielokolumnowa 'data.frame', ale faktycznie jest' macierzą' jako kolumną w 'data.frame'. Zatem 'do.call (data.frame, ...)' powinno zrobić lewę, aby "spłaszczyć" wyjście. – A5C1D2H2I1M1N2O1R2T1
@AnandaMahto dzięki. Wiem o co ci chodzi. – agstudy