我有现场仪器的数据,每15分钟测量和记录7个不同参数的值。该数据集延续了多年。有时仪器会发生故障或脱机进行预防性维护,从而导致记录中的日期不完整。在对数据进行后期处理时,我想删除那些不完整的日子(或者,或者说只保留完整的日期)。
数据可能的缩写示例:
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-01
和2012-02-03
是完整的日子,我想删除2012-02-02
,因为这是不完整的一天。
答案 0 :(得分:2)
代码
library(dplyr)
library(lubridate)
dataset %>%
mutate(Day = floor_date(Date, unit = "day")) %>%
group_by(Day) %>%
mutate(nObservation = n()) %>%
filter(nObservation == max(nObservation)
答案 1 :(得分:1)
Date.rle = rle(df$Date)
Date.good = Date.rle$val[Date.rle$len==96]
df = df[df$Date %in% Date.good,]
答案 2 :(得分:0)
这是一个应该有效的基本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,]
我将阈值设置为每天96次观察,但很容易调整。