2017-03-28 6 views
1

一定の時間内に繰り返し観測を数えようとするといくつかの困難に直面しています。 私は基本的に毎分特定のエリア内にいる人の数を数える必要があり、ホストは自分のWi-Fiネットワークに接続されているためIDが検出されます。1分ごとに重複して集計する

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

関連する問題