标签: lubridate

使用lubridate在R中加/减6个月(键合时间)

我期待使用lubridate可靠地加减6个月.

例如,2014年12月31日 - > 2015年6月30日和2014年2月28日 - > 2014年8月31日

等等

问题lubridate是它产生了一个问题12/31/2014.或者,第二个结果是8/28/2014,因为它不仅仅增加了6个月的月份,然后知道哪一天应该最终取决于月份.

有没有办法快速纠正这个?目前,我正在构建一个基本上使用开关的功能,并考虑每个月,但这很长,我也遇到问题.

谢谢!

r date lubridate

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

使用lubridate从POSIXct日期时间开始的月份的第一天

给定POSIXct日期时间,如何提取当月的第一天进行聚合?

library(lubridate)

full.date <- ymd_hms("2013-01-01 00:00:21")
Run Code Online (Sandbox Code Playgroud)

r lubridate

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

如何确定日期是否是周末(不使用lubridate)

我有一个日期对象(yyyy-mm-dd)的向量,我想确定它们是否在周末.是否有能够直接确定这一功能的功能?

我可以wday()lubridate包中使用,然后确定返回的值是否,01或者07其他更直接的东西?

x <- seq(Sys.Date()-10, Sys.Date(), by = 1)
x[lubridate::wday(x) %in% c(1, 7)]
Run Code Online (Sandbox Code Playgroud)

datetime r lubridate

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

R lubridate将秒数转换为日期

关于R的润滑剂包,我有一个简单的问题.自纪元以来,我在几秒钟内就有了一系列时间戳.我想将其转换为YYYY-MM-DD-HH格式.在基础R中,我可以做这样的事情,首先将其转换为日期格式

> x = as.POSIXct(1356129107,origin = "1970-01-01",tz = "GMT")
> x
[1] "2012-12-21 22:31:47 GMT"
Run Code Online (Sandbox Code Playgroud)

请注意,上面只是将其转换为日期格式,而不是YYYY-MM-DD-HH格式.我怎么在lubridate这样做?我怎么用基础R呢?

非常感谢提前

r lubridate

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

R一年到十年

我想将最近十年的一组日期列为最近,例如:

1922 --> 1920,  
2099 --> 2090,  
Run Code Online (Sandbox Code Playgroud)

等等

我希望我能在Lubridate做到这一点,如:

floor_date(1922, 'decade')
Run Code Online (Sandbox Code Playgroud)

但我得到:

Error in match.arg(unit) : 
  'arg' should be one of “second”, “minute”, “hour”, “day”, “week”, “month”, “year”
Run Code Online (Sandbox Code Playgroud)

有没有办法优雅地做到这一点,也许避免一堆if-else语句进行分箱,并希望避免一堆cuts进行分组?

r date lubridate

18
推荐指数
3
解决办法
5646
查看次数

将日期时间转换为格式化的时间字符串

我不知道为什么它不起作用.这是我的代码:

> t <- hms("14:11:49")
> t
[1] "14H 11M 49S"
t <- t + minutes(3)
> format(t, format="%H:%M:%S")
[1] "14H 14M 49S"
# Expected output: "14:14:49"
Run Code Online (Sandbox Code Playgroud)

更新:

目前我找到了这个解决方案,但我希望有一个更优雅的解决方案:

t <- hms("14:11:49") # example period object
sprintf("%s:%s:%s", hour(t), minute(t), second(t))
#"14:11:49"
Run Code Online (Sandbox Code Playgroud)

datetime r lubridate

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

lubridate中的有效时区

快速的谷歌搜索似乎让我无处可去.在lubridate的tz选项中有哪些有效时区?特别是,我正在寻找巴西利亚的时区.谢谢!

library(lubridate)
dts <- c("6-3-1995 12:01:01","29-3-1995 23:01:01","29-3-1995 20:01:01")
dmy_hms(dts)               # locale's tz default
dmy_hms(dts, tz = "chile") # Chilean time (has one time zone only)
Run Code Online (Sandbox Code Playgroud)

r posixct lubridate

17
推荐指数
1
解决办法
5860
查看次数

避免日期操作中的舍入陷阱的最佳实践

我正在进行一些日期/时间操作,并在转换日期 - >时间 - >日期时遇到可解释但令人不愉快的往返问题.我已经通过在适当的点进行四舍五入来暂时克服这个问题,但我想知道是否有更好的日期处理方法会更清晰.我正在使用base-R和lubridate函数的混合.

tl; dr有一个很好的,简单的方法从十进制日期(YYYY.fff)转换到Date类(和返回)而不经过POSIXt并导致四舍五入(和可能的时区)并发症?

从1918年的几天开始,作为单独的年/月/日列(不是我的问题的关键部分,但它是我的管道恰好开始的地方):

library(lubridate)
dd <- data.frame(year=1918,month=9,day=1:12)
Run Code Online (Sandbox Code Playgroud)

转换年/月/日 - >日期 - >时间:

dd <- transform(dd,
                time=decimal_date(make_date(year, month, day)))
Run Code Online (Sandbox Code Playgroud)

由于收尾,所得时间向量的连续差异并不完全是1:这是可以理解的,但会导致问题.

table(diff(dd$time)*365)
## 0.999999999985448  1.00000000006844 
##                 9                 2 
Run Code Online (Sandbox Code Playgroud)

现在假设我转换回日期:日期在午夜之前或之后(在任一方向偏离<1秒):

d2 <- lubridate::date_decimal(dd$time)
#  [1] "1918-09-01 00:00:00 UTC" "1918-09-02 00:00:00 UTC"
#  [3] "1918-09-03 00:00:00 UTC" "1918-09-03 23:59:59 UTC"
#  [5] "1918-09-04 23:59:59 UTC" "1918-09-05 23:59:59 UTC"
#  [7] "1918-09-07 00:00:00 UTC" "1918-09-08 00:00:00 UTC"
#  [9] "1918-09-09 00:00:00 UTC" "1918-09-09 …
Run Code Online (Sandbox Code Playgroud)

datetime r date lubridate

17
推荐指数
1
解决办法
385
查看次数

有一个lubridate减法只返回一个数值

我有一个变量叫做Started人类受试者参加研究dos1的日期和另一个被称为受试者最后接受手术的日期.我想知道从他们上次手术到入学当天有多少个月.我试过了:

as.period(syrrupan$Started-syrrupan$dos1,units=c("month"))
Run Code Online (Sandbox Code Playgroud)

我希望这给我一些类似的东西:

14, 18, 1, 26 
Run Code Online (Sandbox Code Playgroud)

每个数字是月数.

相反,我得到:

1 year, -4 months, -5 days and -1 hours   1 year, -5 months, -23 days and -1 hours   1 year, -7 months, 2 days and -1 hours   1 year, -8 months, -28 days and 1 hour   1 year, -7 months, -23 days and 1 hour.   
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到几个月的数值?

r date package lubridate

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

使用R中的lubridate包找到一年中的某一天

我希望找到一个带有lubridate的POSIXct类对象的一年中的某一天.例如,12-9-2015是第343天.

使用lubridate很容易找到一周或一个月的日期:

> lubridate::wday("2015-12-09 04:27:56 EST", labels = T)
Wed
> lubridate::day("2015-12-09 04:27:56 EST")
9
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以在一年中这样做?我搜索了文档和其他问题,但还没有找到答案.

r lubridate

16
推荐指数
1
解决办法
5794
查看次数

标签 统计

lubridate ×10

r ×10

date ×4

datetime ×3

package ×1

posixct ×1