2017-05-19 8 views
0

私は2つの列を持つデータフレームを持っています。Rデータフレーム内の時間枠内のすべての行を削除します

最初の列は、第がNUMで、POSIXctある:

 date    value 
    1 09.05.2017 10:30 0.72599362 
    2 09.05.2017 10:31 0.6942953 
    3 09.05.2017 10:32 0.6913402 
    4 09.05.2017 10:33 0.7219035 
    5 09.05.2017 10:34 0.7484892 
    6 09.05.2017 10:35 0.7566694 
    7 09.05.2017 10:36 0.7699520 
    8 09.05.2017 10:37 0.7863227 
    9 09.05.2017 10:38 0.7955254 
    10 09.05.2017 10:39 0.7724675 
    11 09.05.2017 10:40 0.7883882 
    12 09.05.2017 10:41 0.7975705 
    13 09.05.2017 10:42 0.7842776 
    14 09.05.2017 10:43 0.7705962 
    15 09.05.2017 10:44 0.7607595 
    16 09.05.2017 10:45 0.7658722 
    17 09.05.2017 10:46 0.7617003 
    18 09.05.2017 10:47 0.7536121 
    19 09.05.2017 10:48 0.7493686 
    ... 

Iは、2つの5分以内にあるすべてのエントリを削除する必要があります。意味私は5分ごとの行を表示するだけです。

所望の結果:完全に除去しなければならないとの間で

 date    value 
    1 09.05.2017 10:30 0.72599362 
    2 09.05.2017 10:35 0.7566694 
    3 09.05.2017 10:40 0.7883882 
    4 09.05.2017 10:45 0.7658722 

行。

私はこのようなカットを使用して考えた:

dfResult <- cut(dfResult$date, "5 min") 

が、カット機能は、だから私はカットして集計を使用して考えていたいくつかの理由

のためのデータフレームからエントリを削除しません。しかし、集計には常にsumやmeanのような関数があります。これは私が望むものではありません。

dfResult <- aggregate(. ~ cut(dfResult$date, "5 min"), 
          dfResult[setdiff(names(dfResult), "date")], sum) 

上記の行は、必要な処理を行いますが、集計関数としてsumを使用しています。間にあるエントリを単に削除する機能はありますか?

ありがとうございます!

答えて

0

dateがクラスPOSIXctある場合は、5分の剰余は、このデータフレームを考えると0

を返すためだけの行を返すために、剰余演算子(%%)を使用することができます(のみあなたはshouldn reproducibility-のために含ま「t)がいる限り、あなたの日付列がPOSIXctオブジェクトであるとして、これを実行する必要があります。

df <- structure(list(date = structure(c(1504632600, 1504632660, 1504632720, 
1504632780, 1504632840, 1504632900, 1504632960, 1504633020, 1504633080, 
1504633140, 1504633200, 1504633260, 1504633320, 1504633380, 1504633440, 
1504633500, 1504633560, 1504633620, 1504633680), class = c("POSIXct", 
"POSIXt"), tzone = ""), value = c(0.72599362, 0.6942953, 0.6913402, 
0.7219035, 0.7484892, 0.7566694, 0.769952, 0.7863227, 0.7955254, 
0.7724675, 0.7883882, 0.7975705, 0.7842776, 0.7705962, 0.7607595, 
0.7658722, 0.7617003, 0.7536121, 0.7493686)), .Names = c("date", 
"value"), row.names = c(NA, -19L), class = "data.frame") 

戻るだけ希望行:

df[which(as.numeric(x$date) %% (60 * 5) == 0),] 
+0

仕事魅力のように、ありがとう! – CoffeeCups

関連する問題