Мы можем использовать sub
для создания -
между первыми 4 символами и следующими 2. Сопоставьте четыре символа (.{4}
), поместите их в группы захвата ((...)
), а затем следующие 2 символа в другой группе захвата, замените их на обратная ссылка для этих групп (\\1
, \\2
), а между ними мы добавляем -
.
df1$Col <- sub('(.{4})(.{2})', "\\1-\\2", df1$month_key)
df1$Col
#[1] "2016-01" "2016-03" "2016-04" "2016-06" "2015-01"
Другой вариант substr/paste
with(df1, paste(substr(month_key, 1,4), substr(month_key, 5, 6), sep="-"))
Однако у класса Date
тоже есть день. Итак, чтобы преобразовать исходный столбец в «Дата», мы можем добавить любой день, возможно, 01
, и использовать формат as.Date
.
as.Date(paste0(df1$month_key, "01"), "%Y%m%d")
данные
df1 <- structure(list(Col = c(201601L, 201603L, 201604L, 201606L, 201501L
)), .Names = "month_key", class = "data.frame", row.names = c(NA, -5L))
person
akrun
schedule
18.08.2016