Как указывалось в предыдущих комментариях и ответах, класс POSIXct
(т.е. время-дата) в R
всегда хранит даты вместе со временем. Если вы преобразуете из символьного объекта всего несколько раз в этот класс, сегодняшняя дата добавляется по умолчанию (если вы хотите другую дату, вы можете сделать, например, следующее: as.POSIXct(paste("2020-01-01", times), format = "%Y-%m-%d %H:%M")
).
Однако это почти никогда не должно быть проблемой, так как вы можете использовать format(times, format = "%H:%M")
или ggplot2
scale_x_datetime
, чтобы получить только время назад. Для построения графика это будет выглядеть примерно так:
times <- c("00:30", "01:30", "02:30", "03:30", "04:30", "05:30", "06:30", "07:30", "08:30", "09:30", "10:30", "11:30", "12:30", "13:30", "14:30",
"15:30", "16:30", "17:30", "18:30", "19:30", "20:30", "21:30", "22:30", "23:30")
library(tidyverse)
df <- tibble(
time_chr = times,
time = as.POSIXct(times, format = "%H:%M"),
value = rnorm(length(times))
)
df
#> # A tibble: 24 x 3
#> time_chr time value
#> <chr> <dttm> <dbl>
#> 1 00:30 2020-03-12 00:30:00 0.352
#> 2 01:30 2020-03-12 01:30:00 -0.547
#> 3 02:30 2020-03-12 02:30:00 -0.574
#> 4 03:30 2020-03-12 03:30:00 0.843
#> 5 04:30 2020-03-12 04:30:00 0.798
#> 6 05:30 2020-03-12 05:30:00 -0.620
#> 7 06:30 2020-03-12 06:30:00 0.213
#> 8 07:30 2020-03-12 07:30:00 1.21
#> 9 08:30 2020-03-12 08:30:00 0.370
#> 10 09:30 2020-03-12 09:30:00 0.497
#> # … with 14 more rows
ggplot(df, aes(x = time, y = value)) +
geom_line() +
scale_x_datetime(date_labels = "%H:%M")
Создано в 2020-03-12 пакетом Представить (v0 .3.0)