使用R中的列创建时间间隔

使用R中的列创建时间间隔,r,time,dataframe,intervals,elements,R,Time,Dataframe,Intervals,Elements,我有一个数据框的列,它由日期组成,比如说以这种形式 d$x<-c("2014-05-01 11:36:12", "2014-05-01 11:36:14", "2014-05-01 11:36:15", "2014-05-01 11:36:16", "2014-05-01 11:36:16", "2014-05-01 11:36:17") 使用sqldf包: #data datx <- data.frame(x=as.POSIXct(c("2014-0

我有一个数据框的列,它由日期组成,比如说以这种形式

    d$x<-c("2014-05-01 11:36:12", "2014-05-01 11:36:14", "2014-05-01 11:36:15",
           "2014-05-01 11:36:16", "2014-05-01 11:36:16", "2014-05-01 11:36:17")

使用
sqldf
包:

#data
datx <- data.frame(x=as.POSIXct(c("2014-05-01 11:36:12",
                                  "2014-05-01 11:36:14",
                                  "2014-05-01 11:36:15",
                                  "2014-05-01 11:36:16",
                                  "2014-05-01 11:36:16",
                                  "2014-05-01 11:36:17")))
daty <- data.frame(y=as.POSIXct(c("2014-05-01 11:38:21",
                                  "2014-05-01 11:42:26",
                                  "2014-05-01 11:38:33",
                                  "2014-05-01 11:53:44",
                                  "2014-05-01 11:59:23",
                                  "2014-05-01 12:04:39")))

myInterval <- 180 #3*60sec = 3 minutes

require(sqldf)
#get y within x +/-interval
res <-
  fn$sqldf("SELECT distinct(b.y)
         FROM datx a, daty b
         WHERE b.y BETWEEN a.x-$myInterval 
         AND a.x+$myInterval")
#output
res
#                   y
# 1 2014-05-01 11:38:21
# 2 2014-05-01 11:38:33
#get index
which(daty$y %in% res$y)
# [1] 1 3
#数据
达克斯
$k<-rep(0,length(d$x))
for (i in 1:(length(d$y))) {
  for (j in 1:(d$x)) {
    if ((d$y[i] <= d$x[j]+60) & (d$y[i] >=d$x[j]-60))
      k[i]=i
  }
}
#data
datx <- data.frame(x=as.POSIXct(c("2014-05-01 11:36:12",
                                  "2014-05-01 11:36:14",
                                  "2014-05-01 11:36:15",
                                  "2014-05-01 11:36:16",
                                  "2014-05-01 11:36:16",
                                  "2014-05-01 11:36:17")))
daty <- data.frame(y=as.POSIXct(c("2014-05-01 11:38:21",
                                  "2014-05-01 11:42:26",
                                  "2014-05-01 11:38:33",
                                  "2014-05-01 11:53:44",
                                  "2014-05-01 11:59:23",
                                  "2014-05-01 12:04:39")))

myInterval <- 180 #3*60sec = 3 minutes

require(sqldf)
#get y within x +/-interval
res <-
  fn$sqldf("SELECT distinct(b.y)
         FROM datx a, daty b
         WHERE b.y BETWEEN a.x-$myInterval 
         AND a.x+$myInterval")
#output
res
#                   y
# 1 2014-05-01 11:38:21
# 2 2014-05-01 11:38:33
#get index
which(daty$y %in% res$y)
# [1] 1 3