это можно решить двумя различными способами. Есть небольшой удобный пакет под названием Zoo
, в котором есть класс, представляющий годы и месяцы, который можно использовать, если вы хотите сохранить тот текстовый формат, который вам нравится, и в то же время иметь возможность упорядочивать месяцы и годы по дате. Или вы можете представить их как начало каждого месяца, добавив 01 и преобразовав в стандартный формат даты.
year <- factor(c("Y2015", "Y2016", "Y2016", "Y2015"))
month <- c(1, 12, 2, 5)
#change year to a text variable, (for ease of processing) and remove the Y
year <- as.character(year)
year <- gsub(pattern = "Y", replacement = "", x = year)
# I assume you want this to actually be a date type, lets convert to the text field you want
## paste the fields together
#2 ways of going about this
#Zoo Way
#Represent the data as a year mon class in R (good if you keep it in R)
chr_YYYY_MM <- paste0(year, "-", month)
library(zoo)
yearmon_YYYY_MM<- as.yearmon(x = chr_YYYY_MM)
yearmon_YYYY_MM
# [1] "Jan 2015" "Dec 2016" "Feb 2016" "May 2015"
# You can keep it like this as long as you keep it in R
# you can change it back to a date object easily too: (if you need to upload back to sQL and keep it as a date)
as.Date(as.yearmon(yearmon_YYYY_MM))
# [1] "2015-01-01" "2016-12-01" "2016-02-01" "2015-05-01"
# Base R way
# You would need to append a 01 to the end of it
chr_date <- paste0(year, "-", month, "-", "01")
formated <- as.Date(x = chr_date, format = "%Y-%m-%d", tz = "UTC")
print(formated)
# [1] "2015-01-01" "2016-12-01" "2016-02-01" "2015-05-01"
class(formated)
# [1] "Date"