0

我有一个数据框,如下所示:

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))

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

4

2 回答 2

2

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

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

date-objects 不是 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)
于 2013-10-09T19:23:15.900 回答
1

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

subset(dfrm, dates(y) %in% dates(intensives))改为这样做。

==无论数据类型如何,您使用的第一个子集都将永远不会工作。

于 2013-10-09T19:19:04.030 回答