小编Bil*_*rry的帖子

使用dplyr基于POSIXct日期和时间大于日期时间的子集数据帧

我不确定选择日期时间作为POSIXct格式会出什么问题。我已经阅读了一些有关基于as.Date设置数据框的评论,并且可以使它正常工作。我也读过很多文章,建议过滤POSIXct格式应该可以,但是由于某种原因,我无法使它起作用。

示例数据框:

library(lubridate)
library(dplyr)

date_test <- seq(ymd_hms('2016-07-01 00:00:00'),ymd_hms('2016-08-01 00:00:00'), by = '15 min')
date_test <- data.frame(date_test)
date_test$datetime <- date_test$date_test
date_test <- select(date_test, -date_test)
Run Code Online (Sandbox Code Playgroud)

我检查它是否为POSIXct格式,然后尝试了几种方法对大于2016-07-01 01:15:00的数据框进行子集化。但是,输出内容永远不会显示小于2016-07-01 01:15:00的日期时间被删除。很抱歉,如果有人问过这个问题,我找不到它,但是我已经寻找并试图使它生效。我将UTC用作时区以避免夏令时问题,所以这里不是问题-除非过滤器需要它。

class(date_test$datetime)

date_test <- date_test %>% filter(datetime > '2016-07-01 01:15:00')

date_test <- date_test %>% 
  filter(datetime > as.POSIXct("2016-07-01 00:15"))

date_test <- subset(date_test, datetime > as.POSIXct('2016-07-01 01:15:00')) 
Run Code Online (Sandbox Code Playgroud)

现在,如果我使用以下方法进行过滤:

date_test <- date_test %>% 
  filter(datetime > as.POSIXct("2016-07-10 01:15:00"))
Run Code Online (Sandbox Code Playgroud)

一天的时间错了,输出结果很奇怪?

2016-07-09 13:30:00
2016-07-09 13:45:00
2016-07-09 14:00:00
2016-07-09 14:15:00
2016-07-09 14:30:00
Run Code Online (Sandbox Code Playgroud)

如果有帮助,我将MAC OS Sierra与R Studio版本1.0.143和R You Stupid Darkness,DPLYR 0.5和Lubridate 1.6一起使用

r filter posixct lubridate dplyr

3
推荐指数
1
解决办法
8473
查看次数

标签 统计

dplyr ×1

filter ×1

lubridate ×1

posixct ×1

r ×1