R 基于时间戳间隔的求和频率

R 基于时间戳间隔的求和频率,r,timestamp,dplyr,R,Timestamp,Dplyr,我有一个提供特定时间戳的频率计数的数据集 a <- read.table(header=TRUE, text=" Time Freq 7:00:36 3 7:00:55 0 7:02:18 8 7:02:54 3 7:04:20 6 7:04:36 0 7:05:52 4 7:06:17 0 7:07:47 3 7:08:03 0 ") a Time Freq 1 7:00:

我有一个提供特定时间戳的频率计数的数据集

a <- read.table(header=TRUE, text="
Time Freq
7:00:36    3
7:00:55    0
7:02:18    8
7:02:54    3
7:04:20    6
7:04:36    0
7:05:52    4
7:06:17    0
7:07:47    3
7:08:03    0
                   ")
a  
      Time Freq
1  7:00:36    3
2  7:00:55    0
3  7:02:18    8
4  7:02:54    3
5  7:04:20    6
6  7:04:36    0
7  7:05:52    4
8  7:06:17    0
9  7:07:47    3
10 7:08:03    0

str(a)
'data.frame':   10 obs. of  2 variables:
 $ Time: Factor w/ 10 levels "7:00:36","7:00:55",..: 1 2 3 4 5 6 7 8 9 10
 $ Freq: int  3 0 8 3 6 0 4 0 3 0

a$Time <- as.POSIXct(strptime(a$Time, "%H:%M:%OS"))

str(a)
'data.frame':   10 obs. of  2 variables:
 $ Time: POSIXct, format: "2016-05-09 07:00:36" "2016-05-09 07:00:55" "2016-05-09 07:02:18" "2016-05-09 07:02:54" ...
 $ Freq: int  3 0 8 3 6 0 4 0 3 0
以下是我的尝试:

library(dplyr)
interval <- 2

summary <- a %>%
  mutate(interval = floor((as.numeric(Time - min(Time)))/intrvl)+1) %>%
  group_by(interval, add = TRUE) %>%
  summarize(starttime = min(Time),
            frequency = n()) %>%
  select(-interval)
summary
Source: local data frame [10 x 2]

             starttime frequency
                (time)     (int)
1  2016-05-09 07:00:36         1
2  2016-05-09 07:00:55         1
3  2016-05-09 07:02:18         1
4  2016-05-09 07:02:54         1
5  2016-05-09 07:04:20         1
6  2016-05-09 07:04:36         1
7  2016-05-09 07:05:52         1
8  2016-05-09 07:06:17         1
9  2016-05-09 07:07:47         1
10 2016-05-09 07:08:03         1
库(dplyr)
间隔%
分组依据(间隔,相加=真)%>%
汇总(开始时间=分钟(时间),
频率=n())%>%
选择(-interval)
总结
来源:本地数据帧[10 x 2]
起始时间频率
(时间)(国际)
1  2016-05-09 07:00:36         1
2  2016-05-09 07:00:55         1
3  2016-05-09 07:02:18         1
4  2016-05-09 07:02:54         1
5  2016-05-09 07:04:20         1
6  2016-05-09 07:04:36         1
7  2016-05-09 07:05:52         1
8  2016-05-09 07:06:17         1
9  2016-05-09 07:07:47         1
10 2016-05-09 07:08:03         1

这种使用
cut
aggregate
的基本R方法将起作用:

a$Time <- as.POSIXct(strptime(a$Time, "%H:%M:%OS"))

# get a factor variable that contains separate levels for every 2 minute interval
a$interval <- cut(a$Time, breaks="2 min")
# aggregate the data, summing the frequencies
aggregate(Freq ~ interval, data=a, FUN=sum)

a$Time看看
?cut.Date
a$Time <- as.POSIXct(strptime(a$Time, "%H:%M:%OS"))

# get a factor variable that contains separate levels for every 2 minute interval
a$interval <- cut(a$Time, breaks="2 min")
# aggregate the data, summing the frequencies
aggregate(Freq ~ interval, data=a, FUN=sum)