#r #date #character #converters
#r #Дата #символ #конвертеры
Вопрос:
У меня есть столбец даты, который имеет такие значения: 2003MM01
, 2003MM02
, 2003MM03
Как вы можете догадаться MM01
, обозначает первый месяц и MM02
второй месяц и т.д.. Если я посмотрю на структуру из моего фрейма данных, он скажет, что столбец даты является символом. Я хочу, чтобы мой столбец даты выглядел следующим образом.
date column
2003-01-01
2003-02-01
2003-03-01
2003-04-01
2003-05-01
Я также должен упомянуть, что в моем столбце даты несколько лет с одной и той же символьной строкой, так 2004MM01
что , 2005MM01
, и т.д.. Есть идеи, как заменить символьные строки правильной датой? а также преобразовать столбец даты из символа в дату?
Ответ №1:
vec <- c("2003MM01", "2003MM02", "2003MM03", "2004MM01", "2005MM01")
as.Date(gsub("MM(.*)$", "-\1-01", vec))
# [1] "2003-01-01" "2003-02-01" "2003-03-01" "2004-01-01" "2005-01-01"
Ответ №2:
Попробуйте этот base R
подход, также используя paste0()
для добавления дня, а затем используя as.Date()
для преобразования в дату. Здесь код:
#Data
df <- data.frame(date=c('2003MM01', '2003MM02', '2003MM03'),stringsAsFactors = F)
#Format date
df$Col1 <- as.Date(paste0(df$date,'01'),'%YMM%m%d')
Вывод:
date Col1
1 2003MM01 2003-01-01
2 2003MM02 2003-02-01
3 2003MM03 2003-03-01
Ответ №3:
Мы можем использовать ymd
из lubridate
library(lubridate)
library(stringr)
ymd(str_remove(vec, "MM"), truncated = 2)
#[1] "2003-01-01" "2003-02-01" "2003-03-01" "2004-01-01" "2005-01-01"
данные
vec <- c("2003MM01", "2003MM02", "2003MM03", "2004MM01", "2005MM01")