Извлекать определенные числовые шаблоны из целого числа в векторе

#r

#r

Вопрос:

Для данных Quakes , которые выглядят следующим образом:

     Date      Latitude   Longitude   M
1 18001011       ...
2 18001122
3 18030000 
4 19001010                        ...
  

class(Quakes$Date) выдает «integer» и без использования регулярных выражений для захвата шаблонов, как мы извлекаем годы, месяцы и дни?

Для первой строки с 18001011 это было бы:

 Year = 1800, Month = 10, Day = 11
  

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

1.использовать substr stat.ethz.ch/R-manual/R-devel/library/base/html/substr.html

2. Для чего ожидаются день и месяц 18030000 ?

3. Это своего рода случайное число, потому что я хотел просто взять 4 числа, а затем 2, 2.

4. Хорошо, но тогда решение lubridate дало бы вам NA для y <- ymd("18030000"); day(y); month(y)

Ответ №1:

пакет lubridate может помочь.

 library(lubridate)
ymd("18001122")
  

Или:

 ymd(Quakes$Date)
  

И извлекать год и месяц по отдельности:

 year(ymd(Quakes$Date))
month(ymd(Quakes$Date))
day(ymd(Quakes$Date))
  

Base-R также может использовать as.Date(), передавая его спецификацию формата, такую как:

 as.Date("18001122",format="%Y%m%d")
as.Date(as.character(Quakes$Date),format="%Y%m%d")