2012-02-24 2 views
24

Я знаю, что это основной вопрос, но по какой-то странной причине я не могу найти ответ.Как получить среднюю, среднюю и другую статистику по всей матрице, массиву или файлу данных?

Как я должен применять основные статистические функции, такие как среднее, медиана и т.д. по всей матрице, матрицу или dataframe, чтобы получить уникальные ответы, а не вектор по строкам или столбцам

ответ

22

Так как это выглядит довольно честно, я буду рассматривать это немного более подробно, чтобы включить «и т. Д.», в дополнение к mean и median.

  1. Для матрицы или массива, как другие утверждали, mean и median будет возвращать одно значение. Однако var вычислит ковариации между столбцами двумерной матрицы. Интересно, что для многомерного массива var возвращается к возврату единственного значения. sd на 2-й матрице будет работать, но устарел, возвращая стандартное отклонение столбцов. Еще лучше, mad возвращает одно значение на двумерной матрице и многомерном массиве. Если вы хотите вернуть, самый безопасный маршрут - сначала с помощью as.vector(). Еще весело?

  2. Для data.frame, mean устарел, но снова будет действовать на столбцы отдельно. median требует, чтобы вы принуждали вектор к первому, или unlist. Как и раньше, var вернет ковариации, а sd снова устарел, но вернет стандартное отклонение столбцов. mad требует, чтобы вы принуждали вектор или unlist. В общем случае для data.frame, если вы хотите, чтобы что-то действовало во всех значениях, вы обычно будете только unlist.

Edit: Late новости ломка(): В R является defunctified 3.0.0 mean.data.frame:

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

По умолчанию mean и median т.д. работать над полный массив или матрицу.

Например:

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

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

Для кадров данных, вы можете заставить их в матрицу первого (причина это по умолчанию по столбцам происходит потому, что dataframe может иметь столбцы со строками в нем, что вы можете» т взять среднее):

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

Просто будьте осторожны, что ваш dataframe имеет все числовые столбцы, прежде чем принуждать к матрице. Или исключить нечисловые.

+0

Но для dataframes, '' mean' и median' не работают как , Как вы указываете, при принуждении df к матрице будет ошибка из-за нечисловых столбцов (поэтому вам нужно создать индекс столбца, чтобы касаться только числовых столбцов). (Более того, если размер кадра данных невелик, он неэффективен и не масштабируется, чтобы преобразовать его с помощью 'as.matrix (mdf)' - большой временной переменной). – smci

 Смежные вопросы

  • Нет связанных вопросов^_^