Hi, thanks for reply. I tried to replicate your code, but I got different output. How is that possible, please?
> df <- data.frame(Date = c('2013-Jan', '2013-Feb', '2013-Mar', '2013-Apr', '2013-May', '2013-Jun',
+ '2013-Jul', '2013-Aug', '2013-Sep', '2013-Oct', '2013-Nov', '2013-Dec' ) ,
+ Value = c(12, 10, 5, 69, 41, 12, 13, 17, 25, 2, -10, 15))
>
> class(df$Date)
[1] "factor"
>
> as.Date(paste0(as.character(df$Date), "-01"), format = "%Y-%b-%d")
[1] NA NA NA NA NA NA NA NA NA NA NA NA
Hmm, could be a locale setting. What is your locale?
Sys.getlocale()
library(tidyverse)
df <- data.frame(Date = c('2013-Jan', '2013-Feb', '2013-Mar', '2013-Apr', '2013-May', '2013-Jun',
'2013-Jul', '2013-Aug', '2013-Sep', '2013-Oct', '2013-Nov', '2013-Dec' ) ,
Value = c(12, 10, 5, 69, 41, 12, 13, 17, 25, 2, -10, 15))
# works
Sys.setlocale("LC_TIME", "English_UK")
#> [1] "English_United Kingdom.1252"
as.Date(paste0(as.character(df$Date), "-01"), format = "%Y-%b-%d")
#> [1] "2013-01-01" "2013-02-01" "2013-03-01" "2013-04-01" "2013-05-01"
#> [6] "2013-06-01" "2013-07-01" "2013-08-01" "2013-09-01" "2013-10-01"
#> [11] "2013-11-01" "2013-12-01"
# works partly because the month names abbrs are different
Sys.setlocale("LC_TIME", "German")
#> [1] "German_Germany.1252"
as.Date(paste0(as.character(df$Date), "-01"), format = "%Y-%b-%d")
#> [1] "2013-01-01" "2013-02-01" NA "2013-04-01" NA
#> [6] "2013-06-01" "2013-07-01" "2013-08-01" "2013-09-01" NA
#> [11] "2013-11-01" NA
# does not work at all
Sys.setlocale("LC_TIME", "Chinese")
#> [1] "Chinese (Simplified)_China.936"
as.Date(paste0(as.character(df$Date), "-01"), format = "%Y-%b-%d")
#> [1] NA NA NA NA NA NA NA NA NA NA NA NA