2017-09-19 3 views
0

compte tenu de la data.frame suivante, je voudrais calculer la moyenne entre 2011-01-03 et 2011-01-06:Calculer la moyenne basée sur des horizons de temps

   GOOG.Open GOOG.High GOOG.Low GOOG.Close GOOG.Volume 
2011-01-03 297.94 302.49 297.94  301.87   NA 
2011-01-04 302.51 302.79 299.76  300.76   NA 
2011-01-05 299.73 304.86 299.72  304.23   NA 
2011-01-06 305.03 308.91 304.72  306.44   NA 

Le résultat du code mean(data$GOOG.Open, seq(from=01/03/11, to=01/06/11)) me donne 529.8661 et fait actuellement référence à différentes valeurs dans le bloc de données. Savez-vous comment calculer la moyenne?

Répondre

0

D'abord, vous devez définir la façon dont vous avez vos données stockées voir: How to make a great R reproducible example?

J'utilise dplyr dans le package tidyverse pour analyser les données et lubridate pour définir les formats de date. Cela suppose que vous voulez pouvoir faire varier les dates moyennées.

library(tidyverse) 
library(lubridate) 

dat <- data.frame(date = c('2011-01-03','2011-01-04','2011-01-05','2011-01-06'), 
        GOOG.Open = c(297.94,302.51,299.73,305.03)) 
dat %>% 
    mutate(date = format(ymd(date))) %>% 
    filter(date>='2011-01-03' & date<='2011-01-06') %>% 
    summarise(goog_mean = mean(GOOG.Open)) 

Si vous voulez juste la moyenne des données présentées, vous pouvez utiliser:

mean(dat$GOOG.Open) 

ou

dat %>% 
    summarise(mean = mean(GOOG.Open)) 
+0

Nice, merci pour l'indice. Je télécharge les données de google et les "dates" sont en fait les noms des lignes. Avez-vous une idée de comment je peux faire référence à ces dates, si elles ne sont pas une colonne mais des noms de famille? – aleximeyer

+0

https://rdrr.io/cran/dplyr/man/add_rownames.html –