0

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

4

1 回答 1

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)
于 2017-07-27T18:12:02.340 回答