我从不同的传感器获取一些数据,包括每分钟的时间戳。 为了可视化我的数据,我想用平均值来总结每10个值。
我的数据如下:
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
我有一个有效的代码,但只适用于数字列:
aggregate(df,list(rep(1:(nrow(df)%/%n+1),each=n,len=nrow(df))),mean)[-1];
这给了我想要的前三列,它们是数字向量。但是对于那个POSIXlt来说,我得到的只是“2017-07-24 18:17:32”。 有谁知道这方面的解决方案?如果我不得不单独采取时间方法,这不会是一个问题。
答案 0 :(得分: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)