Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Restructure Date in R

Tags:

date

r

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.

like image 547
Ajay Avatar asked Nov 22 '25 20:11

Ajay


1 Answers

How about:

df$DATE = format(lubridate::parse_date_time(df$DATE, c('dmy','dby')), '%d-%b-%Y')
like image 200
geotheory Avatar answered Nov 24 '25 10:11

geotheory



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!