Как сократить дату и время

Контраст:

static_cast<Window>(*this)

с:

static_cast<Window&>(*this)

Один вызывает конструктор копирования, другой - нет. Это помогает?

0
задан Sven Hohenstein 18 January 2019 в 06:08
поделиться

2 ответа

Вы можете преобразовать свои строки с помощью 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
0
ответ дан Sven Hohenstein 18 January 2019 в 06:08
поделиться
library(tidyverse) # includes dplyr, tidyr
library(lubridate)

Unite Дата и время

Во-первых, 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.
0
ответ дан Blended 18 January 2019 в 06:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: