【发布时间】:2017-10-19 23:42:06
【问题描述】:
我有一个包含两列的数据框。
第一列是POSIXct,第二列是num:
date value
1 09.05.2017 10:30 0.72599362
2 09.05.2017 10:31 0.6942953
3 09.05.2017 10:32 0.6913402
4 09.05.2017 10:33 0.7219035
5 09.05.2017 10:34 0.7484892
6 09.05.2017 10:35 0.7566694
7 09.05.2017 10:36 0.7699520
8 09.05.2017 10:37 0.7863227
9 09.05.2017 10:38 0.7955254
10 09.05.2017 10:39 0.7724675
11 09.05.2017 10:40 0.7883882
12 09.05.2017 10:41 0.7975705
13 09.05.2017 10:42 0.7842776
14 09.05.2017 10:43 0.7705962
15 09.05.2017 10:44 0.7607595
16 09.05.2017 10:45 0.7658722
17 09.05.2017 10:46 0.7617003
18 09.05.2017 10:47 0.7536121
19 09.05.2017 10:48 0.7493686
...
我需要两次删除 5 分钟内的所有条目。这意味着我只想显示每 5 分钟的行。
期望的结果:
date value
1 09.05.2017 10:30 0.72599362
2 09.05.2017 10:35 0.7566694
3 09.05.2017 10:40 0.7883882
4 09.05.2017 10:45 0.7658722
中间的行应该被完全删除。
我想像这样使用 cut:
dfResult <- cut(dfResult$date, "5 min")
但由于某种原因,cut 函数不会从数据框中删除条目
所以我正在考虑使用带有剪切的聚合。但是聚合总是带有 sum 或 mean 之类的函数,这也不是我想要的。
dfResult <- aggregate(. ~ cut(dfResult$date, "5 min"),
dfResult[setdiff(names(dfResult), "date")], sum)
上面的行做了它应该做的,但使用 sum 作为聚合函数。有没有类似的功能可以简单地删除两者之间的条目?
谢谢!!
【问题讨论】: