Kuma Raj
2014-Sep-23 15:41 UTC
[R] How to combine character month and year columns into one column
Dear R users, I have a data with month and year columns which are both characters and wanted to create a new column like Jan-1999 with the following code. The result is all NA for the month part. What is wrong with the and what is the right way to combine the two? ddf$MonthDay <- paste(month.abb[ddf$month], ddf$Year, sep="-" ) Thanks> dput(ddf)structure(list(month = c("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"), Year = c("1999", "1999", "1999", "1999", "1999", "1999", "1999", "1999", "1999", "1999", "1999", "1999"), views = c(42, 49, 44, 38, 37, 35, 38, 39, 38, 39, 38, 46), MonthDay = c("NA-1999", "NA-1999", "NA-1999", "NA-1999", "NA-1999", "NA-1999", "NA-1999", "NA-1999", "NA-1999", "NA-1999", "NA-1999", "NA-1999")), .Names = c("month", "Year", "views", "MonthDay"), row.names = 109:120, class = "data.frame")>
Marc Schwartz
2014-Sep-23 16:03 UTC
[R] How to combine character month and year columns into one column
On Sep 23, 2014, at 10:41 AM, Kuma Raj <pollaroid at gmail.com> wrote:> Dear R users, > > I have a data with month and year columns which are both characters > and wanted to create a new column like Jan-1999 > with the following code. The result is all NA for the month part. What > is wrong with the and what is the right way to combine the two? > > ddf$MonthDay <- paste(month.abb[ddf$month], ddf$Year, sep="-" ) > > > Thanks > >> dput(ddf) > structure(list(month = c("01", "02", "03", "04", "05", "06", > "07", "08", "09", "10", "11", "12"), Year = c("1999", "1999", > "1999", "1999", "1999", "1999", "1999", "1999", "1999", "1999", > "1999", "1999"), views = c(42, 49, 44, 38, 37, 35, 38, 39, 38, > 39, 38, 46), MonthDay = c("NA-1999", "NA-1999", "NA-1999", "NA-1999", > "NA-1999", "NA-1999", "NA-1999", "NA-1999", "NA-1999", "NA-1999", > "NA-1999", "NA-1999")), .Names = c("month", "Year", "views", > "MonthDay"), row.names = 109:120, class = "data.frame") >> >Since you are trying to use ddf$month as an index into month.abb, you will either need to coerce ddf$month to numeric in your code, or adjust how the data frame is created. In the case of the former approach:> paste(month.abb[as.numeric(ddf$month)], ddf$Year, sep="-" )[1] "Jan-1999" "Feb-1999" "Mar-1999" "Apr-1999" "May-1999" "Jun-1999" [7] "Jul-1999" "Aug-1999" "Sep-1999" "Oct-1999" "Nov-1999" "Dec-1999" Regards, Marc Schwartz