I have dataset like:
CODE NAME DATE HOUR
1 Ab 01-01-19 1
1 Ab 02-01-19 2
1 Ab 03-01-19 3
1 Ab 04-01-19 4
2 Xy 01-JAN-19 1
2 Xy 02-JAN-19 2
2 Xy 03-JAN-19 3
2 Xy 04-JAN-19 4
Actual data set is much bigger. I want to convert all the DATE's in 01-JAN-19 format. I tried with:
a <- as.Date(df$DATE, format = "%d-%b-%y")
b <- as.Date(df$DATE, format = "%d-%m-%y")
a[is.na(a)] <- b[!is.na(b)]
df$ <- a
But it's taking time & giving result in 2019-01-01 format. Even I tried with:
df$DATE <- format(as.Date(df$DATE, format = c("%d-%b-%y", "%d-%m-%y")), "%d-%b-%y")
It's giving the desired result but it's filling alternate NA values in DATE column like:
CODE NAME DATE HOUR
1 Ab 01-JAN-19 1
1 Ab NA 2
1 Ab 03-JAN-19 3
1 Ab NA 4
2 Xy NA 1
2 Xy 02-JAN-19 2
2 Xy NA 3
2 Xy 04-JAN-19 4
I think it's because of format = c("%d-%b-%y", "%d-%m-%y"). How can I convert all DATE's into 01-JAN-19 format.
How about:
df$DATE = format(lubridate::parse_date_time(df$DATE, c('dmy','dby')), '%d-%b-%Y')
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With