user15851936
user15851936

Reputation:

Convert character dates in r (weird format)

I have columns that are named "X1.1.21", "X12.31.20" etc. I can get rid of all the "X"s by using the substring function:

names(df) <- substring(names(df), 2, 8)

I've been trying many different methods to change "1.1.21" into a date format in R, but I'm having no luck so far. How can I go about this?

Upvotes: 1

Views: 218

Answers (1)

Ronak Shah
Ronak Shah

Reputation: 388982

R doesn't like column names that start with numbers (hence you get X in front of them). However, you can still force R to allow column names that start with number by using check.names = FALSE while reading the data.

If you want to include date format as column names, you can use :

df <- data.frame(X1.1.21 = rnorm(5), X12.31.20 = rnorm(5))
names(df) <- as.Date(names(df), 'X%m.%d.%y')
names(df)
#[1] "2021-01-01" "2020-12-31"

However, note that they look like dates but are still of type 'character'

class(names(df))
#[1] "character"

So if you are going to use the column names for some date calculation you need to change it to date type first.

 as.Date(names(df))

Upvotes: 2

Related Questions