2016-12-08 3 views
1

5秒間隔のデータがありますが、連続して収集されませんでした。エーテルA,BまたはCの3つの可能性のある列があります。R:1時間ごとのデータの合計数。不連続な5秒間隔のデータ

datetime     c1 
2000-01-01 00:00:00   A  
2000-01-01 00:00:05   B 
2000-01-01 00:00:10   B 
2000-01-01 00:00:15   A 
2000-01-01 00:06:05   C 
2000-01-01 00:06:05   C 
2000-01-01 01:00:05   B 

私は各ABCの数を取得しようとしています。毎時。だから2000-01-01 00:00:00から2000-01-01 01:00:00には非常に多くのA、B、Cがありました。

予想される出力:

starttime    countA countB countC 
2000-01-01 00:00:00   2  2  2 
2000-01-01 01:00:00   n  1  n 
2000-01-01 02:00:00   n  n  n 
2000-01-01 03:00:00   n  n  n 

または

 hour    c1  count  
2000-01-01 00:00:00  A  2   
2000-01-01 00:00:00  B  2 
2000-01-01 00:00:00  C  3 
2000-01-01 01:00:00  B  1 
     ... 
2000-01-01 07:00:00  A  n 
+0

しかし明確ではありません。 'datetime 'が' POSIXct'と仮定して 'dply1'%group_by(c1、date5sec = cut(datetime、breaks =" 5sec "))%>%tally()'を 'dplyr'とするとどうなりますか? – akrun

+0

助けて? –

+0

あなたが投稿した例から、それぞれのユニークな 'c1'に1つのカウントがあるようです。予想される出力とともに周波数の変化を与える例を投稿することをお勧めします(私が間違っていない場合) – akrun

答えて

2

これはあなたの目標を達成するための一つの方法だろう。まず、最初の1時間に00:00:00が含まれている場合、次の1時間に01:00:00を含めると思います。この方法では、2つの変数を作成する必要があります。 1つはdateで、もう1つはhourです。 format()を使ってgroup_by()に作成しました。私はこの2つの変数とc1を使ってグループを定義しました。次に、グループごとにいくつの行があるかを数えてsammarise()としました。データフレームはmydfとなりますのでご注意ください。

library(dplyr) 

mydf %>% 
group_by(date = format(datetime, "%Y-%m-%d"), 
     hour = format(datetime, "%H"), 
     c1) %>% 
summarize(count = n()) 

#  date hour c1 count 
#  <chr> <chr> <chr> <int> 
#1 2000-01-01 00  A  2 
#2 2000-01-01 00  B  2 
#3 2000-01-01 00  C  2 
#4 2000-01-01 01  B  1 

DATA

mydf <- structure(list(datetime = structure(c(946684800, 946684805, 946684810, 
946684815, 946685165, 946685165, 946688405), class = c("POSIXct", 
"POSIXt"), tzone = "UTC"), c1 = c("A", "B", "B", "A", "C", "C", 
"B")), .Names = c("datetime", "c1"), row.names = c(NA, -7L), class = "data.frame") 
+0

それはそれを分割する良い方法です。私はそれについて考えていたはずです。一を足す。 – akrun

+0

@akrun 'format()'アプローチは、私があなたから学んだものです。クレジットはあなたに行きます。 – jazzurro

+0

これは完璧です、ありがとうございます。時間の経過とともにプロットできるように、 'date'列と' hour'列を集計できますか?ここで、x軸は時間であり、yは各c1の数です。 –

関連する問題