2017-07-27 2 views
0

Je reçois des données de différents capteurs, y compris un horodatage toutes les minutes. Pour visualiser mes données, je voudrais résumer toutes les 10 valeurs avec la moyenne.R - Moyenne de chaque nième Valeur de la colonne dans la trame de données, numérique et POSIX

Mes données ressemble à ceci:

Temp Humidity Pressure   Time 
1   21.9    66.1 1007.76 2017-07-24 18:13:02 
2   21.9    66.2 1007.76 2017-07-24 18:14:05 
3   21.9    66.2 1007.76 2017-07-24 18:15:02 
4   22.0    65.8 1007.76 2017-07-24 18:16:02 
5   22.0    66.1 1007.76 2017-07-24 18:17:02 
6   22.0    66.2 1007.76 2017-07-24 18:18:02 
7   22.0    66.1 1007.76 2017-07-24 18:19:02 
8   22.0    66.3 1007.76 2017-07-24 18:20:02 
9   22.0    66.3 1007.76 2017-07-24 18:21:02 
10   22.0    66.3 1007.76 2017-07-24 18:22:02 
11   22.0    66.0 1007.76 2017-07-24 18:23:02 


# [...] about 1700 rows 

J'ai un code de travail, mais seulement pour les Col. numériques:

aggregate(df,list(rep(1:(nrow(df)%/%n+1),each=n,len=nrow(df))),mean)[-1]; 

Cela me donne ce que je veux pour les trois premières colonnes, sont des vecteurs numériques. Mais pour le moment, ce qui est de POSIXlt tout ce que je reçois est "2017-07-24 18:17:32" dans chaque rangée. Est-ce que quelqu'un sait une solution pour cela? Ce ne serait pas un problème si je devais prendre les moyens du Temps séparément.

+3

utilisation 'dput (tête (df, 10))' pour présenter vos données au lieu de la table que vous avez. – Masoud

+0

... ou 'dput (droplevels (head (df, 11)))' si vous avez des colonnes factorielles. – Gregor

+0

Si la classe de données est 'POSIXt', alors cela devrait fonctionner. Sans voir la structure réelle de vos données, nous ne pouvons pas vous aider. – Masoud

Répondre

0

Vous pouvez faire un groupe de colonnes et group_by celui-ci et summarize toutes les colonnes pour obtenir la moyenne toutes les 10 lignes:

n <- nrow(df) 
df$group <- rep(seq_len(ceiling(n/10)), each = 10)[seq_len(n)] 

library(dplyr) 
df %>% 
    group_by(group) %>% 
    summarise_all(mean) %>% 
    select(-group)