Factor to date format [duplicate] - r

This question already has answers here:
Converting year and month ("yyyy-mm" format) to a date?
(9 answers)
Closed 7 years ago.
I have date in jan-16 format. They are in factor data type. R is recognizing them as character. I want these dates to be arranged in calendar sequence. When I try to plot a graph it gives me in alphabetical order which I don't want. I am getting an error saying
Error in CharToDate(x) : character string is not in a standard unambiguous format.

You can convert your factor date vector to Date type, and then plot it. Most R plotting packages should be able to order numerically on the date.
dates.raw <- c("Jan 16 2015", "Jan 16 2016")
dates.formatted <- as.Date(dates.raw, format = "%B %d %Y")
> dates.formatted
[1] "2015-01-16" "2016-01-16"

Related

How to change from character to date format? [duplicate]

This question already has answers here:
Convert string to date, format: "dd.mm.yyyy"
(4 answers)
What are the "standard unambiguous date" formats for string-to-date conversion in R?
(8 answers)
Closed 3 months ago.
For my dataset, the Date variable has dates in the format of this example: 19-Feb-03
I want to change the above character format dates in the column to a Date format. (As I have to do time series analysis later on)
I tried using the as.Date() method but it didn't work.
x <- '19-Feb-03'
lubridate::ymd(x)
"2019-02-03"
Not sure whether 19 is year or day. You can try lubridate package
x<-"19-Feb-03"
library(lubridate)
ymd(x)
dmy(x)

Convert MM-DD-YYYY into MonthName-DD-YYYY [duplicate]

This question already has answers here:
Changing date format in R
(7 answers)
Closed 1 year ago.
How to convert 10-03-2021 into October-03-2021?
I have column in data frame in MM-DD-YYYY which needs to be converted into Month Name- Date- Year
example
10-03-2021 into October-03-2021
You have two parts: parsing the date, and then printing it with your format.
Parsing is quite easy with the lubridate package:
> library(lubridate)
> dates <- mdy(c('10-03-2021', '01-31-1995'))
> dates
[1] "2021-10-03" "1995-01-31"
For printing, you can then use the format() function:
> format(dates, '%B-%d-%Y')
[1] "October-03-2021" "January-31-1995"
%B is the full name of the month, %d the day and %Y the year (with all 4 digits)

Convert character date to date format [duplicate]

This question already has answers here:
Converting year and month ("yyyy-mm" format) to a date?
(9 answers)
Closed 2 years ago.
I have date in character vector. I need to convert it to date format.
For example :
Month = "202005"
Output should be May-20. It should be in date format so that I can use to filter some dates. Similarly 201912 should return Dec-19
zoo has a function called yearmon().
library(zoo)
month <- "202005"
as.yearmon(month, "%Y%m")
# "May 2020"

Converting YY/MM/DD to MM/DD/YY in R [duplicate]

This question already has answers here:
How to convert date to format "yyyy-mm-dd" in R when input value can be of different formats
(3 answers)
Change Date print format from yyyy-mm-dd to dd-mm-yyyy
(2 answers)
Closed 2 years ago.
I need to find the difference in days between 2 date columns, but one of them is in the format of "6/16/2019" and the other is in the format of "2019-02-25". Not sure which one would be easier to convert to which, but would like to get end result in days. Which I know how to do. I would appreciate help converting the second yyyy-mm-dd to mm-dd-yyyy.
We can use functions from the lubridate package to convert the different formats to dates, and then subtract.
rawData <- "date1,date2
2002-05-15,6/16/2019
2019-12-31,4/15/2020"
data <- read.csv(text = rawData,stringsAsFactors = FALSE)
library(lubridate)
mdy(data$date2) - ymd(data$date1)
...and the output:
> mdy(data$date2) - ymd(data$date1)
Time differences in days
[1] 6241 106
>

How to convert character in yyyy-mm format to date r [duplicate]

This question already has answers here:
Converting year and month ("yyyy-mm" format) to a date?
(9 answers)
Get the difference between dates in terms of weeks, months, quarters, and years
(9 answers)
Closed 4 years ago.
I transformed a date in the yyyy-mm-dd format to the yyyy-mm format using the following command:
format(as.Date(DATE, "%Y-%m-%d"), "%Y-%m")
This works but it returns a character. I want to further use this as a date, so I want to transform this character back to a date class. Using the as.Date() function gives me the error:
Error in charToDate(x) : character string is not in a standard unambiguous format
Does anyone know how to solve this problem?
Update: In the end I want to determine the number of months between two dates in the format yyyy-mm. Does anyone knows how to do this without transforming the characters back to date class?
I had once the same problem and unfortunately the only solution I found was to keep format YYYY-mm-dd with dd==01...
Here is part of the code if you want:
DATE <- str_c(DATE,"-01") df$date <- as.Date(DATE,format="%Y-%m-%d")

Resources