Преобразуйте строки, содержащие диапазоны дат, в даты и найдите разницу во времени в R

#string #r #date #substring

#строка #r #Дата #подстрока

Вопрос:

У меня есть столбец данных:

 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. Как вычислить продолжительность даты?

Комментарии:

1. Проверьте lubridate пакет

2. Спасибо! я читаю это руководство по пакету.

Ответ №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))
  

Затем преобразуйте даты из строк с помощью lubridate ymd() функции ‘s.

 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
  

Комментарии:

1. Большое тебе спасибо, Кара!!