2016-06-21 16 views
0

私は、7つの異なるパラメータの値が測定され、15分ごとに記録されるフィールド機器のデータを持っています。データセットは長年にわたり拡張されています。時には、記録が不完全な日を与える予防保守のために、機器が故障したりオフラインになったりすることがあります。データの後処理では、これらの不完全な日を削除したいとします(または、代わりに、完全な日のみを保持しています)。不完全な日の削除/完了日の保持

データがどのように見えるかの省略例:

Date     Temp 
2012-02-01 00:01:00 18.5 
2012-02-01 00:16:00 18.4 
2012-02-01 00:31:00 18.6 
. 
. 
. 
2012-02-01 23:31:00 19.0 
2012-02-01 23:46:00 18.9 
2012-02-02 00:01:00 19.0 
2012-02-02 00:16:00 19.0 
2012-02-03 00:01:00 17.0 
2012-02-03 00:16:00 17.1 
2012-02-03 00:31:00 17.0 
. 
. 
. 
2012-02-03 23:31:00 18.0 
2012-02-03 23:46:00 18.2 

ので2012-02-012012-02-03は完全な日であり、それが不完全な日であるように私は2012-02-02を削除したいです。

+0

完全な日数は、設定された観測数(約96)ですか? – lmo

+0

はい、1日に96回の観測(線)が必要です – user3900349

答えて

1
Date.rle = rle(df$Date) 
Date.good = Date.rle$val[Date.rle$len==96] 
df = df[df$Date %in% Date.good,] 
2
  1. あたりの観測数を数える日
  2. に日付を変換観測

の最大数を持つ唯一のそれらの日を保持コード

library(dplyr) 
library(lubridate) 
dataset %>% 
    mutate(Day = floor_date(Date, unit = "day")) %>% 
    group_by(Day) %>% 
    mutate(nObservation = n()) %>% 
    filter(nObservation == max(nObservation) 
0

はこちら1つの基底Rメソッドは動作するはずです:

# create a day variable 
df$day <- as.Date(df$Date, format="%Y-%m-%d") 

# calculate the number of observations per day 
df$obsCnt <- ave(df$Temp, df$day, FUN=length) 

# subset data: more than 90 observations 
dfNew <- df[df$obsCnt > 96,] 

私は閾値を1日に96回観測しましたが、調整は簡単です。