Mam listę identycznie posortowanych ramek danych. Bardziej szczegółowe są przypisane nam dane, które otrzymuję po wykonaniu wielu imputacji przy pomocy pakietu AmeliaII. Teraz chcę utworzyć nową ramkę danych, która ma identyczną strukturę, ale zawiera wartości średnie komórek obliczone na podstawie ramek danych.Oblicz statystyki (np. Średnie) w komórkach identycznych ramek danych.
Sposób, w jaki to osiągnąć w tej chwili jest następujący:
## do the Amelia run ------------------------------------------------------------
a.out <- amelia(merged, m=5, ts="Year", cs ="GEO",polytime=1)
## Calculate the output statistics ----------------------------------------------
left.side <- a.out$imputations[[1]][,1:2]
a.out.ncol <- ncol(a.out$imputations[[1]])
a <- a.out$imputations[[1]][,3:a.out.ncol]
b <- a.out$imputations[[2]][,3:a.out.ncol]
c <- a.out$imputations[[3]][,3:a.out.ncol]
d <- a.out$imputations[[4]][,3:a.out.ncol]
e <- a.out$imputations[[5]][,3:a.out.ncol]
# Calculate the Mean of the matrices
mean.right <- apply(abind(a,b,c,d,e,f,g,h,i,j,along=3),c(1,2),mean)
# recombine factors with values
mean <- cbind(left.side,mean.right)
Przypuszczam, że jest to znacznie lepszy sposób to zrobić za pomocą zastosowania, plyr lub podobnego, ale jako R Newbie I jestem tu trochę zagubiony. Czy masz jakieś sugestie, jak to zrobić?
Dzięki, że tak naprawdę zajmuje mi to dużo czasu. Jednak w przeciwieństwie do twojego rozwiązania, moje ramki danych są nie tylko numeryczne, ale mają dwie kolumny "współczynników", które musiałem "rozebrać" przed użyciem tablicy. Gdybyś znał rozwiązanie, które działa również na "mieszanych" ramach danych, to dostałbym "całą drogę". Ale, jak powiedziano wcześniej, twoje rozwiązanie jest zdecydowanie bardziej zwięzłe niż to, którego używałem wcześniej. – Tungurahua
Jeśli dobrze pamiętam, podane przeze mnie rozwiązanie, które udostępniłem, będzie nadal działało: czynniki będą wymuszane na liczbach, a średnia z nich będzie brana (co można bezpiecznie zignorować, ponieważ jest to w większości bezcelowe). –