Подтвердить что ты не робот

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

Я знаю, что это основной вопрос, но по какой-то странной причине я не могу найти ответ.

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

4b9b3361

Ответ 1

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

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

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

Изменить: Поздняя новость(): В R 3.0.0 mean.data.frame дефнактируется:

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

Ответ 2

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

например:.

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

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

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

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

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