有几天我在试图计算一段时间内的重复观察时面临一些困难,让我们说每分钟。 我基本上需要每分钟计算某个区域内的人数,因为主机连接到我的Wi-Fi网络,所以会检测到ID。 实际上,我有这样的事情:
getenv
我需要一个代码,每分钟返回一次ID,考虑到重复,所以结果应如下所示:
ID DATE
247 2017-03-20 15:57
247 2017-03-20 16:01
247 2017-03-20 16:01
247 2017-03-20 16:02
201 2017-03-20 16:02
278 2017-03-20 16:02
247 2017-03-20 16:03
201 2017-03-20 16:03
278 2017-03-20 16:10
278 2017-03-20 16:10
278 2017-03-20 16:10
281 2017-03-20 16:30
有没有办法定制这样的代码,以便每小时,每天和每月给出相同的结果? 我找到的最好的代码就是这个:
DATE ID present
2017-03-20 16:01 1
2017-03-20 16:02 3
2017-03-20 16:03 2
2017-03-20 16:10 1
2017-03-20 16:30 1
它返回:
output <- aggregate(data$mac ~ cut(data$date, "1 min"), data, count)
答案 0 :(得分:1)
使用dplyr
,
library(dplyr)
df[!duplicated(df),] %>%
group_by(DATE) %>%
summarise(new = n())
# A tibble: 6 × 2
# DATE new
# <dttm> <int>
#1 2017-03-20 15:57:00 1
#2 2017-03-20 16:01:00 1
#3 2017-03-20 16:02:00 3
#4 2017-03-20 16:03:00 2
#5 2017-03-20 16:10:00 1
#6 2017-03-20 16:30:00 1
要通过Base R执行此操作,
aggregate(ID ~ DATE, df[!duplicated(df),], FUN = length)
DATE ID
#1 2017-03-20 15:57:00 1
#2 2017-03-20 16:01:00 1
#3 2017-03-20 16:02:00 3
#4 2017-03-20 16:03:00 2
#5 2017-03-20 16:10:00 1
#6 2017-03-20 16:30:00 1