gpt4 book ai didi

r - 在时间轴上设置休息时间间隔

转载 作者:行者123 更新时间:2023-12-01 11:16:20 25 4
gpt4 key购买 nike

首先,让我们创建一些示例数据。时间是使用lubridatehm存储的,因为这似乎是最合适的。

library(tibble)
library(lubridate)
#>
#> Attaching package: 'lubridate'
#> The following object is masked from 'package:base':
#>
#> date

(
data <- tibble(
Time = hm('09:00', '10:30'),
Value = 1
)
)
#> # A tibble: 2 x 2
#> Time Value
#> <S4: Period> <dbl>
#> 1 9H 0M 0S 1
#> 2 10H 30M 0S 1

这就是我想要的情节外观。现在,我已经以半小时的间隔手动指定了休息时间。

library(ggplot2)
library(scales)

ggplot(data, aes(Time, Value)) +
geom_point() +
scale_x_time(breaks = hm('09:00', '09:30', '10:00', '10:30'))

我想每半小时一次自动创建这些休息时间。 尝试使用 scales::date_breaks会出现错误。

ggplot(data, aes(Time, Value)) +
geom_point() +
scale_x_time(breaks = date_breaks('30 mins'))
#> Error in UseMethod("fullseq"): no applicable method for 'fullseq' applied to an object of class "c('hms', 'difftime')"

尝试使用 seq创建中断也会产生错误。

seq(hm('09:00'), hm('10:30'), hm('00:30'))
#> Note: method with signature 'Period#ANY' chosen for function '-',
#> target signature 'Period#Period'.
#> "ANY#Period" would also be valid
#> estimate only: convert to intervals for accuracy
#> Error in if (sum(values - trunc(values))) {: argument is not interpretable as logical

最佳答案

处理方法applied to an object of class "c('hms', 'difftime')"的错误消息应该为您提供线索,表明这里存在类问题。首先要做的是检查您的时间类别,并检查docs(?hm),这两者都将向您显示hm实际上返回了一个期间对象,而不是日期时间。

library(tidyverse)
library(lubridate)

class(data$Time)
#> [1] "Period"
#> attr(,"package")
#> [1] "lubridate"

因此,您需要将 Time更改为 Date或类似的对象。有多种方法可以执行此操作,但我只是将今天的日期和 Time快速粘贴在一起,然后转换为datetime对象。如果您实际上不需要约会,则我使用的日期并不重要。从根本上说,它是创建所需对象的虚拟对象。

您还需要 scale_x_datetime而不是 scale_x_date。如果不设置 date_labels参数,则将具有“ 2018-05-28 09:00:00”之类的标签,因此您可以通过给 date_labels提供格式化字符串来将其格式化为仅次于时间。

data %>%
mutate(time2 = paste(today(), Time) %>% as_datetime()) %>%
ggplot(aes(time2, Value)) +
geom_point() +
scale_x_datetime(breaks = scales::date_breaks("30 mins"), date_labels = "%H:%M")

reprex package(v0.2.0)创建于2018-05-28。

关于r - 在时间轴上设置休息时间间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50568227/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com