2010-04-20 4 views
2

J'essaie d'ajouter une ligne à mon data.frame pour cracher la moyenne de la colonne.En R, Comment ajouter une ligne pour l'information:

Ceci est mon trame de données:

   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 

Je voudrais qu'il devienne:

   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 

Merci!

Répondre

7

simple:

rbind(data, AVERAGES=colMeans(data)) 

[Modifier] Si votre data.frame contient d'autres types que numeric (comme factor ou character), vous pouvez alors utiliser la méthode plus complexe mais plus sûr:

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

Exemple simple :

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 colonne est convertie en numérique, et pour les colonnes non numériques, il ya NA de

+0

Vous monsieur, sont un dieu. Je vous remercie. – Moe

Questions connexes