考虑下面的数据框newDat
Date1 <- seq(from = as.POSIXct("2010-05-01 02:00"),
to = as.POSIXct("2010-05-02 22:00"), by = 3600)
Dat <- data.frame(DateTime = Date1,
x1 = rnorm(length(Date1)))
Date2 <- seq(from = as.POSIXct("2010-05-03 02:00"),
to = as.POSIXct("2010-05-03 07:00"), by = 3600)
Dat2 <- data.frame(DateTime = Date2,
x1 = rnorm(length(Date2)))
newDat = rbind(Dat,Dat2)
我想生成一个新的数据框,其中只包含在给定日期内记录的测量数超过12的日期。在这个特定的例子中,显示的最后一天即2010-05-03应该被忽略,因为只记录了6次测量,所有其他日子应该保留。如何才能做到这一点?
答案 0 :(得分:3)
以下是data.table
方法:
library(data.table)
new.dt <- data.table(newDat)
subst <- new.dt[ , if (.N >= 12) x1, by=format(DateTime, "%Y-%m-%d")]
以下是在基础R中使用table
的方法:
newDat$date <- format(newDat$DateTime, format="%Y-%m-%d")
keep <- names(which(table(newDat$date) >= 12))
new.dt <- newDat[which(newDat$date %in% keep), ]