2017-03-28 55 views
1

在過去的幾天裏,我在計算一段時間內的重複觀測數據方面遇到了一些困難,比如說每分鐘一次。 我基本上需要計算每分鐘內某個區域內的人數,因爲主機已連接到我的Wi-Fi網絡,所以會檢測到該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 

我需要返回ID的每一分鐘,考慮重複數的代碼,這樣的結果應該是這樣的:

  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) 

返回:

 DATE   ID present 

    2017-03-20 16:01   1 
    2017-03-20 16:02 1, 2, 3 
    2017-03-20 16:03  1, 2 
    2017-03-20 16:10   1 
    2017-03-20 16:30   1 

回答

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 

要通過基礎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 
+0

它說我不能使用dplyr cuz我有R 3.1.1 – Alexios91

+0

已編輯但您應該更新。我們現在版本3.3.2! – Sotos

+0

的替代品? 我在debian上,最新版本不可用 – Alexios91

相關問題