[R] Date read correctly from CSV, then reformatted incorrectly by R

Philip Monk prmonk @end|ng |rom gm@||@com
Sat Nov 20 18:08:39 CET 2021


Hello,

Simple but infuriating problem.

Reading in CSV of data using :

```
# CSV file has column headers with date of scene capture in format
dd/mm/yyyy
# check.names = FALSE averts R incorrectly processing dates due to '/'
data <- read.csv("C:/R_data/Bungala (b2000) julian.csv", check.names =
FALSE)

# Converts data table from wide (many columns) to long (many rows) and
creates the new object 'data_long'
# Column 1 is the 'Buffer' number (100-2000), Columns 2-25 contain monthly
data covering 2 years (the header row being the date, and rows 2-21 being a
value for each buffer).
# Column headers for columns 2:25 are mutated into a column called 'Date',
values for each buffer and each date into the column 'LST'
data_long <- data %>% pivot_longer(cols = 2:25, names_to = "Date",
values_to = "LST")

# Instructs R to treat the 'Date' column data as a date
data_long$Date <- as.Date(data_long$Date)
```

Using str(data), I can see that R has correctly read the dates in the
format %d/%m/%y (e.g. 15/12/2015) though has the data type as chr.

Once changing the type to 'Date', however, the date is reconfigured.  For
instance, 15/01/2010 (15 January 2010), becomes 0015-01-20.

I've tried ```data_long$Date <- as.Date(data_long$Date, format =
"%d/%m.%y")```, and also ```tryformat c("%d/%m%y")```, but either the error
persists or I get ```NA```.

How do I make R change Date from 'chr' to 'date' without it going wrong?

Suggestions/hints/solutions would be most welcome.  :)

Thanks for your time,

Philip

Part-time PhD Student (Environmental Science)
Lancaster University, UK.

~~~~~

I asked a question a few weeks ago and put together the answer I needed
from the responses but didn't know how to say thanks on this list.  So,
thanks Andrew Simmons, Bert Gunter, Jeff Newmiller and Daniel Nordlund!

	[[alternative HTML version deleted]]



More information about the R-help mailing list