Контраст:
static_cast<Window>(*this)
с:
static_cast<Window&>(*this)
Один вызывает конструктор копирования, другой - нет. Это помогает?
Вы можете преобразовать свои строки с помощью as.POSIXct
для сравнения даты и времени.
subset(df1,
Date >= as.POSIXct("2018-03-05 09:00:00") & Date <= as.POSIXct("2018-03-05 14:15:00"))
Результат:
Date Price
1 2018-03-05 09:00:00 125.9
2 2018-03-05 09:00:00 125.9
3 2018-03-05 09:00:00 125.9
4 2018-03-05 10:00:01 125.9
5 2018-03-05 10:00:30 125.9
6 2018-03-05 11:03:00 125.9
7 2018-03-05 12:00:01 125.9
9 2018-03-05 14:15:00 125.9
library(tidyverse) # includes dplyr, tidyr
library(lubridate)
Во-первых, tidyr::unite()
может вставить два столбца.
col = Date
: имя нового столбца sep = " "
: работает как в paste()
Далее, lubridate::ymd_hms()
изменяет символ на [ 119] объект формата year-month-day-hour-minute-second
.
(mydf2 <-
mydf %>% # your data set
unite(Date, time, col = Date, sep = " ") %>%
mutate(Date = ymd_hms(Date)))
#> # A tibble: 10 x 2
#> Date price
#> <dttm> <dbl>
#> 1 2018-03-05 09:00:00 126.
#> 2 2018-03-05 09:00:00 126.
#> 3 2018-03-05 09:00:00 126.
#> 4 2018-03-05 10:00:01 126.
#> 5 2018-03-05 10:00:30 126.
#> 6 2018-03-05 11:03:00 126.
#> 7 2018-03-05 12:00:01 126.
#> 8 2018-03-05 15:00:00 126.
#> 9 2018-03-05 14:15:00 126.
#> 10 2018-03-05 17:00:01 126.
Используя dplyr::filter()
, вы можете легко подгруппировать строки.
mydf2 %>%
filter(Date >= ymd_hms("2018-03-05 09:00:00"), # from 2018-03-05 09:00:00
Date <= ymd_hms("2018-03-05 14:15:00")) # to 2018-03-05 14:15:00
#> # A tibble: 8 x 2
#> Date price
#> <dttm> <dbl>
#> 1 2018-03-05 09:00:00 126.
#> 2 2018-03-05 09:00:00 126.
#> 3 2018-03-05 09:00:00 126.
#> 4 2018-03-05 10:00:01 126.
#> 5 2018-03-05 10:00:30 126.
#> 6 2018-03-05 11:03:00 126.
#> 7 2018-03-05 12:00:01 126.
#> 8 2018-03-05 14:15:00 126.
mydf <-
read_table("Date time price
2018-03-05 09:00:00 125.9
2018-03-05 09:00:00 125.9
2018-03-05 09:00:00 125.9
2018-03-05 10:00:01 125.9
2018-03-05 10:00:30 125.9
2018-03-05 11:03:00 125.9
2018-03-05 12:00:01 125.9
2018-03-05 15:00:00 125.9
2018-03-05 14:15:00 125.9
2018-03-05 17:00:01 125.9")
#------------------------------
mydf
#> # A tibble: 10 x 3
#> Date time price
#> <date> <time> <dbl>
#> 1 2018-03-05 09:00 126.
#> 2 2018-03-05 09:00 126.
#> 3 2018-03-05 09:00 126.
#> 4 2018-03-05 10:00 126.
#> 5 2018-03-05 10:00 126.
#> 6 2018-03-05 11:03 126.
#> 7 2018-03-05 12:00 126.
#> 8 2018-03-05 15:00 126.
#> 9 2018-03-05 14:15 126.
#> 10 2018-03-05 17:00 126.