标签: lubridate

计算每年两个日期之间的天数

我有一个数据框,每行都有开始日期和结束日期。我想计算两个日期之间的天数并按年份分割。所以从这里开始:

id <- c(1,2,3)
start <- as.Date(c('01/01/2015','01/01/2016','07/01/2015'), format = '%m/%d/%Y')
end <- as.Date(c('12/31/2016','12/31/2016','12/31/2016'), format = '%m/%d/%Y')
df <- data.frame(id, start, end)
Run Code Online (Sandbox Code Playgroud)
ID 开始 结尾
1 2015年1月1日 2016年12月31日
2 2016年1月1日 2016年12月31日
3 2015年1月7日 2016年12月31日

对此:

ID 开始 结尾 天_号。 2015年 2016年
1 2015年1月1日 2016年12月31日 第730章 365 365
2 2016年1月1日 2016年12月31日 365 0 365
3 2015年7月1日 2016年12月31日 第548章 183 365

感谢任何帮助,请注意我想动态计算年度统计数据,在我的实际案例中我可能会得到很多年的列...我猜 lubridate 可能会有所帮助,但我不确定从哪里开始。

r date lubridate

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

R Lubridate dmy 输出格式

我正在使用 Lubridate 包来格式化数据中的日期。

    str(base$date)
    #>  chr [1:38] " 23.09.2020 " " 23.09.2020 " " 17.06.2020 " " 03.06.2020 " ...
    base$date <-dmy(base$date)
    str(base$date)
    #>  Date[1:38], format: "2020-09-23" "2020-09-23" "2020-06-17" "2020-06-03" "2020-05-27" ...
Run Code Online (Sandbox Code Playgroud)

由于日期的原始数据采用格式字符,因此我想使用 Lubridate 包的 dmy 函数将其转换为格式日期 (dd/mm/yyyy)。我得到的格式日期为 yyyy/mm/dd。函数 dmy 不是应该给我 dd/mm/yyyy 格式的日期吗,因为 d 代表日,m 代表月,y 代表年?

r date lubridate

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

在 R 中将完整年龄从字符转换为数字

我有一个数据集,其中人们的完整年龄为 R 中的字符串(例如,“10 年 8 个月 23 天)”,我需要将其转换为有意义的数字变量。我正在考虑将其转换为有多少天人的年龄(这很困难,因为月份有不同的天数)。因此,最好的解决方案可能是创建一个双变量,将年龄显示为 10.6 或 10.8,一些数字变量携带 10 年 8 个月 5 天大于的信息10年7月12天。

这是我当前变量的示例

library(tibble)

age <- tibble(complete_age = 
             c("10 years 8 months 23 days",
               "9 years 11 months 7 days",
               "11 years 3 months 1 day",
               "8 years 6 months 12 days")) 

age

# A tibble: 4 x 1
  complete_age             
  <chr>                    
1 10 years 8 months 23 days
2 9 years 11 months 7 days 
3 11 years 3 months 1 day  
4 8 years …
Run Code Online (Sandbox Code Playgroud)

r lubridate stringr data-cleaning data-wrangling

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

Difference in days between two dates in R using dplyr and lubridate?

Looking to do the SQL equivalent of datediff in R?

基本上,我想在 R 中进行这个计算

Delivery Date  Expected Date   Difference 
2022-01-05     2022-01-07         -2 
        
Run Code Online (Sandbox Code Playgroud)

datediff r lubridate dplyr tidyverse

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

润滑时区处理

我有以下字符串描述中欧夏令时间的日期和时间:“2021-09-23 12:00:00”。事实上,我有一整列这样的时间点。由于某些原因,我必须使用“lubridate”包中的函数来处理这些时间。使用 'as_datetime' 我得到

t0 = "2021-09-23 12:00:00"
t1 = as_datetime(t0); t1
## [1] "2021-09-23 12:00:00 UTC"
Run Code Online (Sandbox Code Playgroud)

也就是说,as_datetime使用给定的小时和分钟并添加通用时间“UTC”作为时区。提供时区 CEST 代替

t1 = as_datetime(t0, tz = "CEST"); t1
## [1] "2021-09-23 10:00:00 CEST"
Run Code Online (Sandbox Code Playgroud)

也就是说,改变时间,这是我不想要的。

我想要得到的(我真正需要的)是“2021-09-23 12:00:00 CEST”,即更改时区而不更改时间。

我尝试force_tzwith_tz,但这也不起作用。

我还想知道为什么 'lubridate' 将 12:00:00 UST 转换为 10:00:00 CEST,因为 CEST 与 GMT+2 相同,而 UTC 是 GMT+0,所以结果实际上应该是相反的大约。

谢谢你的帮助。

r lubridate

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

R Lubridate软件包安装 - 延迟加载失败

我想在ubuntu上安装R中的lubridate函数.我收到了以下错误.从其他来源了解这与我的系统有关.你能帮我解决这个问题:

> install.packages('lubridate')
Installing package(s) into ‘/home/leader/R/i686-pc-linux-gnu-library/2.15’
(as ‘lib’ is unspecified)
trying URL 'http://cran.rstudio.com/src/contrib/lubridate_1.3.2.tar.gz'
Content type 'application/x-gzip' length 284897 bytes (278 Kb)
opened URL
==================================================
downloaded 278 Kb

* installing *source* package ‘lubridate’ ...
** package ‘lubridate’ successfully unpacked and MD5 sums checked
** R
** data
**  moving datasets to lazyload DB
** inst
** preparing package for lazy loading
Error in setClass("Period", contains = c("Timespan", "numeric"), slots = c(year =    "numeric",  : 
 unused argument(s) (slots = c(year = …
Run Code Online (Sandbox Code Playgroud)

r lubridate

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

查找无法在R Lubridate中解析的日期

作为一个R新手,我正在试图调试神秘的R错误.我有一个包含150k行的csv,我加载到一个名为'date'的数据框中.然后我使用lubridate将此字符列转换为日期时间,以期找到最小/最大日期.

  dates <- csv[c('datetime')]
  dates$datetime <- ymd_hms(dates$datetime)
Run Code Online (Sandbox Code Playgroud)

运行此代码我收到以下错误消息:

Warning message:
3 failed to parse. 
Run Code Online (Sandbox Code Playgroud)

我接受这个,因为CSV可以在那里和下一次运行中有一些janky日期:

min(dates$datetime) 
max(dates$datetime)
Run Code Online (Sandbox Code Playgroud)

这两个都返回NA,我假设它来自仍然存储在数据帧中的少数破碎日期.我已经四处寻找快速解决方案,甚至试图建立一个foreach循环来确定问题日期,但没有运气.什么是识别3个破碎日期的简单方法?

example date format: 2015-06-17 17:10:16 +0000
Run Code Online (Sandbox Code Playgroud)

r date lubridate

4
推荐指数
1
解决办法
7164
查看次数

从字符串和文本数据中提取年份

我需要从具有这些性质的向量中提取开始年和结束年。

 yr<- c("June 2013 – Present (2 years 9 months)", "January 2012 – June 2013 (1 year 6 months)","2006 – Present (10 years)","2002 – 2006 (4 years)")


 yr
 June 2013 – Present (2 years 9 months)
 January 2012 – June 2013 (1 year 6 months)
 2006 – Present (10 years)
 2002 – 2006 (4 years)
Run Code Online (Sandbox Code Playgroud)

我期望这样的输出。有人有建议吗?

 start_yr       end_yr

2013            2016
2012            2013
2006            2016
2002            2006
Run Code Online (Sandbox Code Playgroud)

regex r lubridate stringi

4
推荐指数
1
解决办法
1089
查看次数

为什么sapply不能使用lubridate的parse_date_time而lapply却不使用?

给定:一个简单的4x2数据帧,其中填充了字符类型的数据

目标:相同的数据框,但所有值均替换为对它们应用以下lubridate函数调用的结果: parse_date_time(df, orders = c ("ymd_hms", "mdy_hms"), tz = "ETZ")

似乎使用lapply可以正常工作。使用sapply时,parse_date_time函数返回奇怪的大整数。

数据如下:

df <- as.data.frame(stringsAsFactors = FALSE, matrix(c("2014-01-13 12:08:02", "2014-01-13 12:19:46", "2014-01-14 09:59:09", "2014-01-14 10:05:09", "6-18-2016 17:43:42", "6-18-2016 18:06:59", "6-27-2016 12:16:47", "6-27-2016 12:29:05"), nrow = 4, ncol = 2, byrow = TRUE))

colnames(df) <- c("starttime", "stoptime")

这是sapply调用:

df2 <- sapply(df, FUN = function(column) { parse_date_time(column, orders = c("ymd_hms", "mdy_hms"), tz = "ETZ") })

和讨厌的电话:

df2 <- lapply(df, FUN = function(column) { parse_date_time(column, orders = c("ymd_hms", "mdy_hms"), tz = "ETZ") …

r lapply sapply lubridate

4
推荐指数
1
解决办法
277
查看次数

dplyr中带有日期的Mutate_if或mutate_at

我有一个超过100列的数据集,但是例如,假设我有一个看起来像

dput(tib)
structure(list(f_1 = c("A", "O", "AC", "AC", "AC", "O", "A", "AC", "O", "O"), f_2 = c("New", "New", 
"New", "New", "Renewal", "Renewal", "New", "Renewal", "New", 
"New"), first_dt = c("07-MAY-18", "25-JUL-16", "09-JUN-18", "22-APR-19", 
"03-MAR-19", "10-OCT-16", "08-APR-19", "27-FEB-17", "02-MAY-16", 
"26-MAY-15"), second_dt = c(NA, "27-JUN-16", NA, "18-APR-19", 
"27-FEB-19", "06-OCT-16", "04-APR-19", "27-FEB-17", "25-APR-16", 
NA), third_dt = c("04-APR-16", "21-JUL-16", "05-JUN-18", "18-APR-19", 
"27-FEB-19", "06-OCT-16", "04-APR-19", "27-FEB-17", "25-APR-16", 
"19-MAY-15"), fourth_dt = c("05-FEB-15", "25-JAN-16", "05-JUN-18", 
"10-OCT-18", "08-JAN-19", "02-SEP-16", "24-OCT-18", "29-SEP-16", 
"27-JAN-15", "14-MAY-15"), fifth_dt = structure(c(1459728000, 
1469059200, 1528156800, 1555545600, …
Run Code Online (Sandbox Code Playgroud)

r lubridate dplyr

4
推荐指数
1
解决办法
213
查看次数