ℕʘʘ*_*ḆḽḘ 6 datetime r lubridate dplyr
我正在为以下示例而苦苦挣扎
time = c('2013-01-03 21:59:21.549', '2013-01-04 22:00:21.549', '2013-01-05 22:01:21.222', '2013-01-06 22:06:23.559' )
value = c(1,2,3,4)
data <- data_frame(time, value)
data <-data %>% mutate(time = ymd_hms(time))
> data
# A tibble: 4 × 2
time value
<dttm> <dbl>
1 2013-01-03 21:59:21 1
2 2013-01-04 22:00:21 2
3 2013-01-05 22:01:21 3
4 2013-01-06 22:06:23 4
Run Code Online (Sandbox Code Playgroud)
我怎样才能写出一份dplyr::filter声明,而不是每天只保留21:59和22:01(包括)之间的观察结果?
与hour(time)和分开玩minute(time)在这里似乎不太好。
我在这里错过了什么吗?
预期输出:仅第 1,2 和 3 行。谢谢!
2019 年来了!这是一个更好(也更简单)的解决方案,使用as.hms. 论证tz是强制性的。
time_str = c('2013-01-03 21:59:21.549', '2013-01-04 22:00:21.549', '2013-01-05
22:01:21.222', '2013-01-06 22:06:23.559' )
value = c(1,2,3,4)
data <- tibble(time_str, value)
data %>% mutate(timestamp_utc = ymd_hms(time_str, tz = 'UTC'),
timestamp_est = with_tz(timestamp_utc, 'America/New_York'),
time_est = as.hms(timestamp_est, tz = 'America/New_York')) %>%
filter(time_est >= hms::as.hms('16:59:00', tz = 'America/New_York'),
time_est <= hms::as.hms('17:01:00', tz = 'America/New_York'))
Run Code Online (Sandbox Code Playgroud)
会做这份工作
# A tibble: 2 x 5
time_str value timestamp_utc timestamp_est time_est
<chr> <dbl> <dttm> <dttm> <time>
1 2013-01-03 21:59:21.549 1 2013-01-03 21:59:21.549 2013-01-03 16:59:21.549 16:59.549
2 2013-01-04 22:00:21.549 2 2013-01-04 22:00:21.549 2013-01-04 17:00:21.549 17:00.549
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11425 次 |
| 最近记录: |