标签: lubridate

将 lubridate 日期添加到矢量更改时区,从而更改日期

在 R 包 lubridate 中,我可以使用以下语法轻松创建日期:

> mdy("5/4/2015")
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,它产生以下结果:

[1] "2015-05-04 UTC"
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试将该值添加到数组中,它似乎会从 UTC 更改为我的本地时间 (EDT):

> c(mdy("5/4/2015"))
[1] "2015-05-03 20:00:00 EDT"
Run Code Online (Sandbox Code Playgroud)

由于我不关心时间,这不会对我产生太大影响,只是这会导致日期向后移动 1,如下所示:

> day(mdy("5/4/2015"))
[1] 4
> day(c(mdy("5/4/2015")))
[1] 3
Run Code Online (Sandbox Code Playgroud)

对我来说,向数组添加一些东西的行为不应该改变那个东西的价值。我在这里遗漏了什么,有没有办法解决这个问题?

r date lubridate

5
推荐指数
1
解决办法
774
查看次数

检查 Posixct 时间是否在间隔内

问题:我有两个数据帧,我想根据一个数据帧在另一个数据帧的间隔中的日期/时间来合并。

流量:日期和时间 (Posixct)、频率

mydata:间隔、频率总和

我现在想计算流量的 Posixct 时间是否在 mydata 的间隔内,如果这是 TRUE,我想计算 mydata 中“频率总和”列中的频率。

我遇到的两个问题: 1. 流量数据框的行数明显多于 mydata。我不知道如何告诉 R 循环遍历流量中的每个观察结果以检查 mydata 中的一行。

  1. mydata 的频率间隔中可以有多个观测值拟合。我希望 R 将不同交通观测的所有频率相加,以获得频率总分。而且间隔是重叠的。

这是数据:

DateTime <- c("2014-11-01 04:00:00", "2014-11-01 04:03:00",  "2014-11-01 04:06:00", "2014-11-01 04:08:00", "2014-11-01 04:10:00", "2014-11-01 04:12:00", "2015-08-01 04:13:00", "2015-08-01 04:45:00", "2015-08-01 14:15:00", "2015-08-01 14:13:00")
DateTime <- as.POSIXct(DateTime)
Frequency <- c(1,2,3,5,12,1,2,2,1,1)                 
traffic <- data.frame(DateTime, Frequency)

library(lubridate)
DateTime1 <- c("2014-11-01 04:00:00", "2015-08-01 04:03:00",  "2015-08-01 14:00:00")
DateTime2 <- c("2014-11-01 04:15:00", "2015-08-01 04:13:00",  "2015-08-01 14:15:00")
DateTime1 <- as.POSIXct(DateTime1)
DateTime2 <- as.POSIXct(DateTime2) …
Run Code Online (Sandbox Code Playgroud)

r count intervals lubridate

5
推荐指数
1
解决办法
3717
查看次数

使用 package::object 表示法时未加载 `methods`

当通过 Rscript 运行时,我在执行依赖于包方法的函数时遇到了一些麻烦。我已经知道方法不是通过 Rscript附加的,但它应该由依赖包加载(和可用)并通过它们的包命名空间访问,至少我是这么认为的......

示例 R 脚本(通过 执行Rscript):

#!/usr/bin/Rscript

sessionInfo()

tryCatch({
    str(lubridate::days(30))
}, error = function(e) {
    print(e)
})

sessionInfo()

tryCatch({
    str(lubridate::days(30))
}, error = function(e) {
    print(e)
})

library(methods)
str(lubridate::days(30))
sessionInfo()
Run Code Online (Sandbox Code Playgroud)

输出,下面混合了我的评论和问题......

首先,这是启动sessionInfo()

# sessionInfo()

R version 3.2.2 (2015-08-14)
Platform: x86_64-redhat-linux-gnu (64-bit)
Running under: Amazon Linux AMI 2015.09

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C
 [9] LC_ADDRESS=C               LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C

attached base …
Run Code Online (Sandbox Code Playgroud)

r lubridate

5
推荐指数
0
解决办法
304
查看次数

使用ggplot2绘制时间序列数据

我正在做一个项目,需要使用 ggplot2 来绘制时间序列数据。这是我正在使用的数据集:

欧元

这就是我现在所做的:

library(ggplot2)
library(lubridate)
eur$Date <- as.Date(eur$Date)
ggplot(eur, aes(Date, EUR)) + geom_line()
Run Code Online (Sandbox Code Playgroud)

阴谋

我得到了这个非常奇怪的情节。有人可以帮我解决这个问题吗?

r time-series ggplot2 lubridate

5
推荐指数
1
解决办法
1万
查看次数

lubridate:如何将 difftime 转换为毫秒单位(并绘制它)?

考虑下面的例子

time = c('2013-01-03 22:04:21.549', '2013-01-03 22:04:21.549', '2013-01-03 22:04:21.559', '2013-01-03 22:04:23.559' )
ref = c('2013-01-03 22:04:20', '2013-01-03 22:04:20', '2013-01-03 22:04:20', '2013-01-03 22:04:20')
value = c(1,2,3,4)


data <- data_frame(time, ref, value)
data <-data %>%  mutate(time = ymd_hms(time),
                        ref = ymd_hms(ref),
                        difftime = time - ref)

# A tibble: 4 × 4
                 time                 ref value   difftime
               <dttm>              <dttm> <dbl>     <time>
1 2013-01-03 22:04:21 2013-01-03 22:04:20     1 1.549 secs
2 2013-01-03 22:04:21 2013-01-03 22:04:20     2 1.549 secs
3 2013-01-03 22:04:21 2013-01-03 22:04:20     3 …
Run Code Online (Sandbox Code Playgroud)

datetime r ggplot2 lubridate

5
推荐指数
1
解决办法
2258
查看次数

ggplot:如何使时间序列图的 x/时间轴仅显示时间分量,而不是日期?

考虑下面的例子

library(lubridate)
library(tidyverse)
library(scales)
library(ggplot2)

dataframe <- data_frame(time = c(ymd_hms('2008-01-04 00:00:00'),
                                 ymd_hms('2008-01-04 00:01:00'),
                                 ymd_hms('2008-01-04 00:02:00'),
                                 ymd_hms('2008-01-04 00:03:00'),
                                 ymd_hms('2008-01-05 00:00:00'),
                                 ymd_hms('2008-01-06 00:01:00'),
                                 ymd_hms('2008-01-07 00:02:00'),
                                 ymd_hms('2008-01-08 00:03:00')),
                        value = c(1,2,3,4,5,6,7,8))

# A tibble: 8 × 2
                 time value
               <dttm> <dbl>
1 2008-01-03 19:00:00     1
2 2008-01-03 19:01:00     2
3 2008-01-03 19:02:00     3
4 2008-01-03 19:03:00     4
5 2008-01-04 19:00:00     5
6 2008-01-05 19:01:00     6
7 2008-01-06 19:02:00     7
8 2008-01-07 19:03:00     8
Run Code Online (Sandbox Code Playgroud)

我需要做的很简单:我需要在我的样本中计算所有天中value 同一小时-分-秒的平均值,并绘制它。

我做了以下工作:

dataframe <- dataframe %>% 
  mutate(hour …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 lubridate dplyr

5
推荐指数
1
解决办法
2217
查看次数

as.POSIXlt.POSIXct(x, tz) 中的错误:(从警告转换)未知时区“GMT”

我发现自己遇到了一个问题,我无法找到解决方案的线索 - 这使得实际处理它变得非常困难......这里是:在 R(使用 R-Studio)中,我尝试创建一个 Date 对象图书馆lubridate

library(lubridate)
ymd(20161001)
Run Code Online (Sandbox Code Playgroud)

这导致错误:

as.POSIXlt.POSIXct(x, tz) 中的错误:(从警告转换)未知时区“GMT”

最后一个命令的第二次运行(以及任何后续运行)会产生正确的结果:

ymd(20161001)
[1] "2016-01-01"
Run Code Online (Sandbox Code Playgroud)

直到我重新启动我的 R 会话,当第一次运行再次触发错误时。我检查了几个设置,但无法找到任何改变,从第一到第二轮。例如,这是 my 的输出sessionInfo()

R version 3.3.2 (2016-10-31)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

locale:
[1] LC_COLLATE=Dutch_Netherlands.1252  LC_CTYPE=Dutch_Netherlands.1252    LC_MONETARY=Dutch_Netherlands.1252 LC_NUMERIC=C                      
[5] LC_TIME=Dutch_Netherlands.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] lubridate_1.6.0

loaded via a namespace (and not attached):
[1] magrittr_1.5  tools_3.3.2   stringi_1.1.2 …
Run Code Online (Sandbox Code Playgroud)

r lubridate

5
推荐指数
1
解决办法
1705
查看次数

使用 R Lubridate 提取会计年度

我会创建几个日期。

library(lubridate)
x <- ymd(c("2012-03-26", "2012-05-04", "2012-09-23", "2012-12-31"))
Run Code Online (Sandbox Code Playgroud)

我可以从这些x值中提取年份和季度。

quarter(x, with_year = TRUE, fiscal_start = 10)

[1] 2012.2 2012.3 2012.4 2013.1

但我似乎不能提取财政年度。这行不通,但什么会呢?

year(x, with_year = TRUE, fiscal_start = 10)

我收到以下错误消息:

年份错误(x,with_year = TRUE,Financial_start = 10):未使用的参数(with_year = TRUE,Financial_start = 10)

r lubridate

5
推荐指数
1
解决办法
3263
查看次数

按 lubridate 日期 %within% 间隔连接数据框

我一直在练习和学习使用包含lubridate数据类型的列来处理 R 数据框,例如我的其他问题中的示例问题。

现在,我正在尝试做相当于加入两个数据帧的工作,但是通过一个数据帧中的一个时间戳是否落在另一个数据帧中的一个时间戳来加入它们interval。例如:

这是df1

> glimpse(df1)
Observations: 6,160
Variables: 4
$ upload_id  <int> 2, 2, 2, 2, 2, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, ...
$ site_id    <int> 2, 2, 2, 2, 2, 4, 4, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, ...
$ segment_id <int> 1, 2, 3, 4, 5, 1, 2, 1, 2, 3, …
Run Code Online (Sandbox Code Playgroud)

join r left-join lubridate dplyr

5
推荐指数
1
解决办法
843
查看次数

折叠和合并重叠的时间间隔

我正在开发一个tidyverse基于数据的工作流,并遇到了一种情况,我有一个具有很多时间间隔的数据框。让我们调用数据框my_time_intervals,它可以像这样重现:

library(tidyverse)
library(lubridate)

my_time_intervals <- tribble(
    ~id, ~group, ~start_time, ~end_time,
    1L, 1L, ymd_hms("2018-04-12 11:15:03"), ymd_hms("2018-05-14 02:32:10"),
    2L, 1L, ymd_hms("2018-07-04 02:53:20"), ymd_hms("2018-07-14 18:09:01"),
    3L, 1L, ymd_hms("2018-05-07 13:02:04"), ymd_hms("2018-05-23 08:13:06"),
    4L, 2L, ymd_hms("2018-02-28 17:43:29"), ymd_hms("2018-04-20 03:48:40"),
    5L, 2L, ymd_hms("2018-04-20 01:19:52"), ymd_hms("2018-08-12 12:56:37"),
    6L, 2L, ymd_hms("2018-04-18 20:47:22"), ymd_hms("2018-04-19 16:07:29"),
    7L, 2L, ymd_hms("2018-10-02 14:08:03"), ymd_hms("2018-11-08 00:01:23"),
    8L, 3L, ymd_hms("2018-03-11 22:30:51"), ymd_hms("2018-10-20 21:01:42")
)
Run Code Online (Sandbox Code Playgroud)

这是tibble同一数据框的视图:

> my_time_intervals
# A tibble: 8 x 4
     id group start_time          end_time           
  <int> <int> …
Run Code Online (Sandbox Code Playgroud)

datetime r dataframe lubridate tidyverse

5
推荐指数
1
解决办法
2144
查看次数

标签 统计

lubridate ×10

r ×10

ggplot2 ×3

datetime ×2

dplyr ×2

count ×1

dataframe ×1

date ×1

intervals ×1

join ×1

left-join ×1

tidyverse ×1

time-series ×1