I'm assuming that there is at most 1 non-NA
entry per row:
as.vector(apply(df,1,function(x) ifelse(all(is.na(x)),NA,x[!is.na(x)])))
[1] NA "2012-11-13" "2012-11-19" "2012-11-19" NA
[6] NA NA NA "2012-09-22" "2012-09-23"
[11] "2012-09-23" "2012-09-02" "2012-09-10" "2012-09-23" "2012-09-24"
[16] "2014-09-09" "2012-09-24" "2012-09-24" NA NA
Or to have it as a factor as you have in your original data:
cbind(list(date=as.factor(apply(df,1,function(x) ifelse(all(is.na(x)),NA,x[!is.na(x)])))),df)
date one.date two.date three.date four.date five.date
1 <NA> <NA> <NA> <NA> <NA> <NA>
2 2012-11-13 <NA> 2012-11-13 <NA> <NA> <NA>
3 2012-11-19 <NA> <NA> 2012-11-19 <NA> <NA>
4 2012-11-19 <NA> 2012-11-19 <NA> <NA> <NA>
5 <NA> <NA> <NA> <NA> <NA> <NA>
6 <NA> <NA> <NA> <NA> <NA> <NA>
7 <NA> <NA> <NA> <NA> <NA> <NA>
8 <NA> <NA> <NA> <NA> <NA> <NA>
9 2012-09-22 <NA> <NA> 2012-09-22 <NA> <NA>
10 2012-09-23 2012-09-23 <NA> <NA> <NA> <NA>
11 2012-09-23 2012-09-23 <NA> <NA> <NA> <NA>
12 2012-09-02 <NA> <NA> <NA> 2012-09-02 <NA>
13 2012-09-10 <NA> <NA> <NA> 2012-09-10 <NA>
14 2012-09-23 <NA> <NA> <NA> 2012-09-23 <NA>
15 2012-09-24 <NA> <NA> <NA> <NA> 2012-09-24
16 2014-09-09 <NA> <NA> <NA> <NA> 2014-09-09
17 2012-09-24 <NA> 2012-09-24 <NA> <NA> <NA>
18 2012-09-24 <NA> <NA> 2012-09-24 <NA> <NA>
19 <NA> <NA> <NA> <NA> <NA> <NA>
20 <NA> <NA> <NA> <NA> <NA> <NA>