R - 数据框中列的每个第n个值的平均值,数字和& POSIX

时间:2017-07-27 17:45:15

标签: r dataframe mean posixlt

我从不同的传感器获取一些数据,包括每分钟的时间戳。 为了可视化我的数据,我想用平均值来总结每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”。 有谁知道这方面的解决方案?如果我不得不单独采取时间方法,这不会是一个问题。

1 个答案:

答案 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)