【问题标题】:Convert strings containing date ranges to dates and find time difference in R将包含日期范围的字符串转换为日期并在 R 中查找时差
【发布时间】:2014-08-17 19:13:23
【问题描述】:

我有一列数据:

dates  <- c("20140106_20140131", "20140106_20140331", "20140201_20140210", 
            "20140201_20140228", "20140211_20140220", "20140221_20140228",
            "20140301_20140310", "20140301_20140331")

我想让 R 知道这些变量是“日期至今”格式

问题

  1. 如何编写 R 代码转换为日期格式?例如第一个变量:“01/06/2014 至 01/31/2014”。
  2. 如何计算日期持续时间?

【问题讨论】:

  • 查看lubridate
  • 谢谢!我正在阅读此包装手册。

标签: string r date substring


【解决方案1】:
# vector of your date ranges
dates <- c("20140106_20140131", "20140106_20140331", "20140201_20140210", 
       "20140201_20140228", "20140211_20140220", "20140221_20140228", 
       "20140301_20140310", "20140301_20140331")

library('stringr')
library('lubridate')

首先创建一个包含两列日期的数据框。

date_frame <- data.frame(str_split_fixed(dates, "_", 2))

然后使用lubridateymd()函数从字符串转换日期。

date_frame$X1 <- ymd(date_frame$X1)
date_frame$X2 <- ymd(date_frame$X2)

创建一个新的时差列。

transform(date_frame, diff = X2 - X1)
          X1         X2    diff
1 2014-01-06 2014-01-31 25 days
2 2014-01-06 2014-03-31 84 days
3 2014-02-01 2014-02-10  9 days
4 2014-02-01 2014-02-28 27 days
5 2014-02-11 2014-02-20  9 days
6 2014-02-21 2014-02-28  7 days
7 2014-03-01 2014-03-10  9 days
8 2014-03-01 2014-03-31 30 days

【讨论】:

  • 非常感谢卡拉!!
猜你喜欢
  • 1970-01-01
  • 2016-12-10
  • 1970-01-01
  • 1970-01-01
  • 2014-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多