标签: lubridate

lubridate:与时区不一致的行为

考虑下面的例子

\n\n
 library(lubridate)\n library(tidyverse)\n\n> hour(ymd_hms(\'2008-01-04 00:00:00\'))\n[1] 0\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在,

\n\n
dataframe <- data_frame(time = c(ymd_hms(\'2008-01-04 00:00:00\'),\n                                 ymd_hms(\'2008-01-04 00:01:00\'),\n                                 ymd_hms(\'2008-01-04 00:02:00\'),\n                                 ymd_hms(\'2008-01-04 00:03:00\')),\n                        value = c(1,2,3,4))\n\nmutate(dataframe,hour = strftime(time, format="%H:%M:%S"),\nhour2 = hour(time)) \n\n# A tibble: 4 \xc3\x97 4\n                 time value     hour hour2\n               <dttm> <dbl>    <chr> <int>\n1 2008-01-03 19:00:00     1 19:00:00    19\n2 2008-01-03 19:01:00     2 19:01:00    19\n3 2008-01-03 19:02:00     3 19:02:00    19\n4 2008-01-03 19:03:00     4 19:03:00    19\n
Run Code Online (Sandbox Code Playgroud)\n\n

这里发生了什么?为什么日期会转换为我不知道的当地时间?

\n

timezone r lubridate dplyr

2
推荐指数
1
解决办法
530
查看次数

R:比较两组润滑日期

我试图找到两个润滑日期向量的交集。但是,在应用该lubridate::intersect函数之后,日期将转换为双精度值。

library(lubridate)
> a <- c(ymd("2017-01-01"), ymd("2017-01-02"), ymd("2017-01-03"), ymd("2017-01-04"))
> b <- c(ymd("2017-01-02"), ymd("2017-01-03"), ymd("2017-01-04"), ymd("2017-01-05"))
> lubridate::intersect(a, b)
[1] 17168 17169 17170
Run Code Online (Sandbox Code Playgroud)

如何保留原始日期类型?

r lubridate

2
推荐指数
1
解决办法
2075
查看次数

每 15 分钟创建一行时间序列

我在创建每 15 分钟一行的时间序列(POSIXct 或 dttm 列)时遇到问题。

在 2015 年 1 月 1 日和 2016 年 12 月 31 日之间每 15 分钟就会出现这样的情况(此处为月/日/年小时:分钟):

1/15/2015 0:00
1/15/2015 0:15
1/15/2015 0:30
1/15/2015 0:45
1/15/2015 1:00
Run Code Online (Sandbox Code Playgroud)

循环开始日期为 01/01/2015 0:00 然后添加 15 分钟直到 12/31/2016 23:45?

有谁知道如何轻松做到这一点?

datetime r time-series lubridate

2
推荐指数
1
解决办法
3373
查看次数

如何在 R 中创建两个时间点之间的随机日期向量?

我看过这个答案,其中列出了时间点之间的所有日期。理想情况下,我想说明开始日期和结束日期,以及向量中想要的元素数量,并获取包括重复项在内的随机日期。

r date lubridate

2
推荐指数
2
解决办法
2876
查看次数

如何从R中的日期获取周数和年份

我试图从 R 中的日期对象中获取周数和年份。

在那之前,我是分开做的:我使用 isoweek() 函数来提取周和 year() 函数来提取年份。这样我的 data.frame 有 3 个变量:日期、周、年

除了年初/年末外,这是有效的:例如,2015 年有 53 周,2016 年 1 月 1 日属于 2015 年的第 53 周……但根据我的代码,2016 年 1 月 1 日是第 53 周但是 2016 年,而我希望它是 2015 年的第 53 周。

那么在 R 中有没有办法提取一起有意义的周数和年份?

我知道有很多关于此的问题,但在这个特定的年初/年终问题上没有发现任何问题。

谢谢 !

r date iso8601 week-number lubridate

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

lubridate - 从日期中提取两位数的日期

我需要从日期中提取两位数的天数。

例如:

date <- as.Date(01-01-2016)
Run Code Online (Sandbox Code Playgroud)
  • year(date) 会给 '2016'
  • month(date) 会产生“1”
  • day(date) 会返回“1”

我想要month()day()返回 '​​01'

标准的 %D 或 %M 在这里似乎不起作用。任何建议,将不胜感激!

r lubridate tidyr

2
推荐指数
1
解决办法
2547
查看次数

lubridate 中日期间隔的平均值

如何获得润滑间隔对象的“平均值”(或更准确地说是中点)?我尝试过使用基本的mean()函数,但它返回一个双精度值。

library(lubridate)   
ex = interval(ymd("2009-05-01"), ymd("2009-07-01"))
mean(ex)
[1] 5270400
Run Code Online (Sandbox Code Playgroud)

r lubridate

2
推荐指数
1
解决办法
2418
查看次数

使用 lubridate 和 dplyr 过滤特定日期的数据集

我正在尝试筛选tibble特定日期。如果我尝试>=该日期和<=同一日期,代码将导致返回 0 行。我已经确定它是<=返回FALSE我认为应该返回的行TRUE。下面是一个工作示例。我只对相关回复感兴趣tidyverse-lubridate请不要使用 Base R 或其他软件包发布答案(我知道如何以这些其他方式解决问题。

数据

library(dplyr)
library(lubridate)

d <- structure(list(Date = structure(c(1572679159, 1572703322, 1572710363, 1572722578,
                                       1572727765, 1572728767, 1572730032),
                                     class = c("POSIXct", "POSIXt"),
                                     tzone = "UTC", label = c(EndDate = "EndDate")),
                    ID = 1:7), class = c("spec_tbl_df", "tbl_df", "tbl", "data.frame"),
               row.names = c(NA, -7L))
Run Code Online (Sandbox Code Playgroud)

当我尝试以下操作时,它返回tibble0 行:

d %>%
  filter(Date >= as_date("2019-11-02"),
         Date <= as_date("2019-11-02"))
Run Code Online (Sandbox Code Playgroud)

然而,当我尝试这样做时,它有效。我缺少什么?问题是,我想Date <= as_date("2019-11-03")返回 …

r lubridate dplyr

2
推荐指数
1
解决办法
4653
查看次数

从随机日期开始的(下一个)月末

我有一个问题,从一天开始到月底的最快方法是什么。我有一个非常大的表,我希望我的代码很快。我当前的代码如下所示:

library(lubridate)

end_of_month <- function(date){
 day(date) <- days_in_month(date)
 date
}
Run Code Online (Sandbox Code Playgroud)

我有另一个问题。从随机日期获取下个月的最后一天是一种快速的方法吗?

"2019-05-15" %>% as.Date() %m+% months(1) %>% end_of_month  # 2019-06-30
Run Code Online (Sandbox Code Playgroud)

我可以一步完成还是需要一个额外的功能来处理这个问题?

r date lubridate dplyr

2
推荐指数
1
解决办法
59
查看次数

为什么`select_if(., is_double)` 返回日期?

使用is_doublewith 时select_if,返回值包括 lubridatedate数据类型的列。为什么是这样?

这是一个使用该today()函数的简单示例。

library(tidyverse)
library(lubridate)

mtcars %>% 
    as_tibble() %>% # Convert to tibble
    mutate(today = today()) %>% # Create a date column
    select_if(is_double) # Select double columns
Run Code Online (Sandbox Code Playgroud)

输出:

# A tibble: 32 x 12
     mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb today     
   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <date>    
 1  21       6  160    110  3.9   2.62  16.5     0     1     4     4 2020-06-25 …
Run Code Online (Sandbox Code Playgroud)

r lubridate dplyr

2
推荐指数
1
解决办法
119
查看次数

标签 统计

lubridate ×10

r ×10

dplyr ×4

date ×3

datetime ×1

iso8601 ×1

tidyr ×1

time-series ×1

timezone ×1

week-number ×1