2017-07-27 30 views
0

我会从不同的传感器,包括每分钟的时间戳一些数据每n个值的平均数。 为了使我的数据可视化,我想用平均值对每10个值进行总结。的R - 从塔中的数据帧,数字&POSIX

我的数据是这样的:

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 

我有一个工作的代码,但只适用于数字的cols:

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

这给了我什么,我想第一个三列,这是数字向量。但是,目前,我所得到的每一行都是“2017-07-24 18:17:32”。 有没有人知道这个解决方案?如果我不得不单独采取时间的手段,这不会是一个问题。

+3

使用'dput(头(DF,10))'出示您的数据,而不是你有的桌子。 – Masoud

+0

...或者'dput(droplevels(head(df,11)))'如果你有因子列。 – Gregor

+0

如果数据的类是'POSIXt',那么它应该工作。没有看到您的数据的实际结构,我们无法帮助您。 – Masoud

回答

0

,您可以拨打栏目组和group_by这一个,summarize所有列,以获得平均每10行:

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)