2012-02-24 8 views

Odpowiedz

22

Ponieważ jest to całkiem niezłe, zamierzam potraktować to nieco bardziej kompleksowo, włączając "itd." część oprócz mean i median.

  1. Na matrycy lub z tablicy, ponieważ inni stwierdzili, mean i median powróci pojedynczą wartość. Jednakże, var będzie obliczać kowariancje między kolumnami dwuwymiarowej macierzy. Co ciekawe, w przypadku tablicy wielowymiarowej var powraca do zwracania pojedynczej wartości. sd na matrycy 2-wymiarowej działa, ale jest przestarzałe, zwracając odchylenie standardowe kolumn. Co jeszcze lepsze, mad zwraca pojedynczą wartość na matrycy 2-wymiarowej i tablicę wielowymiarową. Jeśli chcesz uzyskać pojedynczą wartość zwróconą, najbezpieczniejszą drogą jest przymuszanie najpierw za pomocą as.vector(). Dobra zabawa?

  2. Dla data.frame, mean jest przestarzałe, ale będzie ponownie działać na kolumnach oddzielnie. median wymaga wcześniejszego przekonania do wektora lub unlist. Tak jak poprzednio, var zwróci kowariancje, a sd jest ponownie przestarzałe, ale zwróci standardowe odchylenie kolumn. mad wymaga wymuszenia na wektor lub unlist. Ogólnie rzecz biorąc, jeśli chcesz, aby coś działało na wszystkich wartościach, zwykle najpierw będzie to.

Edit: aktualności łamanie późno(): W R 3.0.0 mean.data.frame jest defunctified:

o mean() for data frames and sd() for data frames and matrices are 
defunct. 
11

Domyślnie mean i median itp pracować nad cała tablica lub macierz.

Np

# array: 
m <- array(runif(100),dim=c(10,10)) 
mean(m) # returns *one* value. 

# matrix: 
mean(as.matrix(m)) # same as before 

Dla ramek danych, można zmusić je do matrycy pierwszy (powodem tego jest domyślnie na kolumnach jest bo dataframe może mieć kolumny z ciągów w nim, które można” t wziąć średnią):

# data frame 
mdf <- as.data.frame(m) 
# mean(mdf) returns column means 
mean(as.matrix(mdf)) # one value. 

Wystarczy być ostrożnym, że dataframe posiada wszystkie kolumny numeryczne przed zmuszanie do matrycy. Lub wyklucz te, które nie są numeryczne.

+0

Ale dataframes, '' median' mean' i nie działają jak . Jak zauważysz, wymuszenie df na macierz spowoduje błąd z powodu kolumn nie numerycznych (musisz więc utworzyć indeks kolumny, aby dotykał tylko kolumn numerycznych). (Ponadto, jeśli ramka danych jest duża, nie jest wydajna ani skalowalna, aby przekonwertować ją z 'as.matrix (mdf)' - duża zmienna tymczasowa). – smci

Powiązane problemy