В R, Как добавить строку для информации: - PullRequest
2 голосов
/ 20 апреля 2010

Я пытаюсь добавить строку в свой data.frame, чтобы выложить среднее значение столбца.

Это мой фрейм данных:

              Weight Response
1   Control     59      0.0
2 Treatment     90      0.8
3 Treatment     47      0.1
4 Treamment    106      0.1
5   Control     85      0.7
6 Treatment     73      0.6
7   Control     61      0.2

Я бы хотел, чтобы оно стало:

              Weight Response
1   Control     59      0.0
2 Treatment     90      0.8
3 Treatment     47      0.1
4 Treamment    106      0.1
5   Control     85      0.7
6 Treatment     73      0.6
7   Control     61      0.2
8 AVERAGES      74      0.3

Спасибо!

1 Ответ

7 голосов
/ 20 апреля 2010

Простой:

rbind(data, AVERAGES=colMeans(data))

[Редактировать] Если ваш data.frame содержит другие типы, кроме numeric (например, factor или character), то вы можете использовать более сложный, но более безопасный метод:

rbind(data, AVERAGES=as.data.frame(lapply(data, mean)))

Простой пример:

data <- data.frame(
 x_Date = Sys.Date()+1:3,
 x_numeric = 1:3+.1,
 x_POSIXt = Sys.time()+1:3,
 x_factor = factor(letters[1:3]),
 x_character = letters[1:3],
 x_logical = c(TRUE,FALSE,TRUE),
 x_complex = 1i+1:3,
 stringsAsFactors = FALSE,
 row.names=paste("Row",1:3)
)

rbind(data, AVERAGES=as.data.frame(lapply(data , mean)))
# Warning in mean.default(X[[4L]], ...) :
  # argument is not numeric or logical: returning NA
# Calls: rbind -> as.data.frame -> lapply -> FUN -> mean.default
# Warning in mean.default(X[[5L]], ...) :
  # argument is not numeric or logical: returning NA
# Calls: rbind -> as.data.frame -> lapply -> FUN -> mean.default
             # x_Date x_numeric            x_POSIXt x_factor x_character x_logical x_complex
# Row 1    2010-04-21       1.1 2010-04-20 23:30:42        a           a  1.000000      1+1i
# Row 2    2010-04-22       2.1 2010-04-20 23:30:43        b           b  0.000000      2+1i
# Row 3    2010-04-23       3.1 2010-04-20 23:30:44        c           c  1.000000      3+1i
# AVERAGES 2010-04-22       2.1 2010-04-20 23:30:43     <NA>        <NA>  0.666667      2+1i

logical столбец преобразуется в числовой, а для нечисловых столбцов есть NA '*

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...