【发布时间】:2018-01-03 14:08:19
【问题描述】:
我从不同的传感器获取一些数据,包括每分钟的时间戳。 为了可视化我的数据,我想用平均值总结每 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”。 有谁知道这个的解决方案?如果我必须单独使用时间的手段,那将不是问题。
【问题讨论】:
-
使用
dput(head(df,10))来展示您的数据,而不是您拥有的表格。 -
...或
dput(droplevels(head(df, 11))),如果您有因子列。 -
如果数据类是
POSIXt,那么它应该可以工作。如果不了解您的数据的实际结构,我们将无法为您提供帮助。 -
@psalterium 不确定究竟什么是有效的,但主要是因为如果你有字符,你就无法理解它们的意思。它们应该是
POSIXt和POSIXct的类。 -
@Masoud 我只是把时间列放在第一位,所以数据现在的顺序是“时间、温度、湿度、压力”。我这样做是因为我误读了您的答案。令我惊讶的是,它现在可以完美运行。正如我在问题中所写的,“时间”一直都是 POSIXlt 的。我只是想知道它为什么会这样。