2017-09-28 3 views
0

J'ai besoin de calculer quelques statistiques descriptives, telles que la médiane, la variance et l'écart-type de diverses données. Toutes les bases de données, environ 300, ont les mêmes quantités de variables, mais le nombre d'observations diffère de l'une à l'autre, tout comme les valeurs. Comme je n'ai pas encore réussi à générer cette boucle, j'essaie d'abord de lancer une seule trame de données, une boucle qui peut générer les statistiques, en divisant la base de données en groupes de sept observations.R: Comment diviser des données en groupes et appliquer des statistiques

La première dataframe je travaille pour générer la boucle qui fera les statistiques de base est la suivante:

# A tibble: 363 x 4 
      Day Location Flow Qty 
     <dttm> <chr> <dbl> <dbl> 
1 2014-03-03 ABC_100 4948 1637.10 
2 2014-03-04 ABC_100 3916 778.70 
3 2014-03-05 ABC_100 4471 748.40 
4 2014-03-06 ABC_100 5318 888.50 
5 2014-03-07 ABC_100 5888 1607.10 
6 2014-03-08 ABC_100 7490 2515.60 
7 2014-03-09 ABC_100 4306 1569.22 
8 2014-03-10 ABC_100 4939 1287.50 
9 2014-03-11 ABC_100 4988 1547.00 
10 2014-03-12 ABC_100 4801 1407.20 
# ... with 353 more rows 

C'est le code que je suis capable d'écrire. Avec cela j'ai besoin: 1 - il casse le dataframe en groupes de 7 observations; 2 - générer les statistiques de base: médiane, variance, moyenne et écart-type de chaque groupe; 3 - stocker ces données dans une nouvelle trame de données qui rassemble toutes ces statistiques

n <- 1 
meanIBI100 <- aggregate(teste, list(rep(1:(nrow(teste) %% n+1), each = n, len = nrow(teste))), median, sd, var)[-1] 

Je ne peux pas le faire fonctionner et je ne peux pas trouver les moyens de me montrer comment le résoudre. Si quelqu'un peut vous aider, merci beaucoup!

Même si quelqu'un sait comment faire tourner la boucle non seulement cette dataframe mais toutes les dataframes que j'ai - et là, je crois que c'est le cas d'une boucle dans une autre boucle, je vous remercie aussi!

Répondre

0

laissez DF être votre data.frame

library(data.table) 
DT <- data.table(DF) 

DT 

# this will get you your mean and SD's for each column 
DT[, sapply(.SD, function(x) list(mean=mean(x), sd=sd(x)))] 

# If we want to add names to the columns 
wide <- setnames(DT[, sapply(.SD, function(x) list(mean=mean(x), sd=sd(x))], 
c("ID", sapply(names(DT)[-1], paste0, c(".men", ".SD")))) 

Référence Ricardo Saporta Compute mean and standard deviation by group for multiple variables in a data.frame

+0

En outre, @Falves, si vous souhaitez que les groupes de 7 parce que vous essayez de groupe par semaine, vous interdisez utilisez 'by = week (Day)' dans le troisième "index" de votre 'data.table'. – Renu

+0

Merci d'avoir répondu, Abdul! Cependant, avant de générer les statistiques, j'ai vraiment besoin de diviser mon dataframe en groupes avec 7 observations et seulement là, générer les statistiques pour chaque groupe. – Falves