【发布时间】:2020-02-28 00:01:35
【问题描述】:
我有跨越 6 周的无线电跟踪数据,当给定时间段内的检测(即观察)数量较低时,该数据的可靠性较低。因此,我想对我的数据框进行子集化,以便从我的数据中排除少于 10 次检测的任何小时。如下图所示,一行“Power”对应一次检测。
DateTime Power
> 1. 2018-05-21 20:56:04 30
> 2. 2018-05-21 20:56:07 20
> 3. 2018-05-21 20:56:44 35
> 4. 2018-05-21 20:56:47 37
> 5. 2018-05-21 20:57:48 26
> 6. 2018-05-21 21:32:36 35
我知道这可能涉及首先按小时进行某种计数,我认为我已经使用下面的代码(然后生成了下面的数据框)实现了这一点,但我不确定我现在如何子集我的初始数据框有了这些计数。
Tag201 %>%
count(Date1 = as.Date(DateTime), Hour = hour(DateTime)) %>%
group_by(Date1) %>%
complete(Date1, Hour = min(Hour):24, fill = list(n = 0)) %>%
arrange(Date1, Hour)
Date1 Hour n
<date> <int> <dbl>
1 2018-05-19 0 402
2 2018-05-19 1 4
3 2018-05-19 2 501
4 2018-05-19 3 858
5 2018-05-19 4 192
6 2018-05-19 5 19
任何帮助将不胜感激。
编辑:
我设法用下面的代码做到了这一点:
Tag201 <- Tag201 %>%
group_by(Date=floor_date(DateTime, "1 hour")) %>%
mutate(c1=length(Power))
tt <- table(Tag201$c1)
Tag201 <- subset(Tag201, c1 %in% names(tt[tt >10]))
【问题讨论】:
标签: r count time-series subset