Cybernetic Cybernetic - 3 months ago 16
R Question

Combine separate Year and Month columns into single Date Column

I have a data frame (df) like this:

code year month
1 YYOOGG 2011 8
2 YYOOGG 2011 1
3 YYOOGG 2011 4
4 YYOOGG 2011 3
5 YYOOGG 2011 12
6 YYOOGG 2011 9


and I need to create a 4th column with the Date like this:

code year month Date
1 YYOOGG 2011 8 2011-08
2 YYOOGG 2014 1 2014-01
3 YYOOGG 2016 4 2016-04
4 YYOOGG 2009 3 2009-03
5 YYOOGG 2000 12 2000-12
6 YYOOGG 2010 9 2010-09


I tried this:

df$Date <- as.Date(paste(df$year, df$month, sep="-"), "%Y-%M")


but I get the following as the date:

2011-09-09

Answer

I'd use zoo::as.yearmon as follows

df$Date <- as.yearmon(paste(df$year, df$month), "%Y %m")

It will not look like the desired output (i.e. 2011-01).

However, IMO this approach is better than m0h3n's because df$Date will be saved as a yearmon object rather than a string. Therefore you can be handled it like a date. For example, if you save df$Date as a string you're going to have a hard time plotting your data over time, etc...