通过日期向量在类chron的数据框中对列进行子集

时间:2013-10-09 19:09:03

标签: r subset chron

我的数据框类似于:

x <- c(1:6)
y <- c("06/01/13 16:00:00",
       "06/01/13 16:00:00", 
       "06/03/13 20:00:00",
       "06/03/13 20:00:00",
       "06/07/13 20:00:00", 
       "06/08/13 20:00:00")
dfrm <- data.frame(x,y)
dfrm
   x             y
  1 06/01/13 16:00:00
  2 06/01/13 16:00:00
  3 06/03/13 20:00:00
  4 06/03/13 20:00:00
  5 06/07/13 20:00:00
  6 06/08/13 20:00:00

我想让你成为一个chron对象:

dfrm$y <- as.chron(dfrm$y, "%m/%d/%y %H:%M")

然后我有一个日期向量:

intensives <- c("06/01/13", "06/07/13")

然后我希望将数据框“dfrm”按“密集”向量中的日期进行子集化。 我会怎么做:

subset(dfrm, y==dates(intensives))

subset(dfrm, y %in% dates(intensives))

但两者都给我一个空结果。

2 个答案:

答案 0 :(得分:2)

注意:在大多数人的设置中,stringAsFactors = TRUE,转换为chron会失败。他们需要这样做:

dfrm$y <- as.chron(as.character(dfrm$y), "%m/%d/%y %H:%M")

日期对象不是chron-objects,但chron对象可以用dates函数强制

 subset(dfrm, dates(y) %in% dates(intensives))
  x                   y
1 1 (06/01/13 16:00:00)
2 2 (06/01/13 16:00:00)
5 5 (06/07/13 20:00:00)

答案 1 :(得分:1)

那是因为您将日期时间与日期进行比较。

改为subset(dfrm, dates(y) %in% dates(intensives))

使用==的第一个子集将无法工作,无论数据类型如何。