How to add a column and convert dates in R [duplicate] - r

This question already has an answer here:
How can I convert this to month?
(1 answer)
Closed 8 years ago.
So I have the following data set which shows temperatures for 365 days of the year. Each date is labeled by the day of the week in a y-m-d format. I'm trying to add a new column called month, which will display the current month which the date shows. Ex: 2014-01-01 will show January while 2014-10-25 will show October. Can anyone help? I'm trying to use Lubridate, but I'm still new at R, and am having a lot of trouble.

The format.Date function return a vector of character values and the "%B" parameter determine the result as full month values:
dfrm$Month <- format( as.Date(dfrm$yourDate) , "%B")
If yourDate-column were already an R Date-object then the as.Date is not needed. Consult the help page for strptime. There can be separators in between the (possibly multiple) format specs
?strptime

Related

How to reformat dates to dd/mm/yyyy to yyyy [duplicate]

This question already has answers here:
Extract year from date
(7 answers)
Closed 2 years ago.
Essentially, I just need to drop the extra info provided by the day and month, and only retain the year.
My data is in the form of
dd/mm/yyyy (so, 20/11/2001 for example) and I want to just retain the yyyy (so 2001).
This question and answer: R: How to remove the day from a date?
have been somewhat helpful, but I have thousands of individual dates and so copying in the exact dates I need to change isn't going to work.
Does anyone have any idea how I can do this??
Convert to date class, then extract year using format:
format(as.Date(df1$Date, format="%d/%m/%Y"),"%Y")

When I try to make a new column in r for each date to indicate its quarter it only gives me one response [duplicate]

This question already has answers here:
Format date as Year/Quarter
(10 answers)
Closed 2 years ago.
In one of my columns I am given a date. I am trying to make a new column to indicate which quarter that date lies in so that way i can determine how many observations entered a certain venue in each quarter. End goal is to sumarize based off of quarter. Here is an example of the code I am using and an example of the output. as.Date(as.yearqtr(x, format ="%Y-%m-%d" )) . As you can see my problem is that It only returns 2019 q2, and i am confused why. This is my code PARTIES$QUARTER <- (as.yearqtr(PARTIES$opened, format = "%Y-%M-%d"))
It should be %m for (month) and not %M (which specifies the Minute as decimal number (00–59).)
library(zoo)
PARTIES$QUARTER <- as.yearqtr(PARTIES$opened, format = "%Y-%m-%d")

Why does R impute the 12th of the month when formatting a year as a Date [duplicate]

This question already has answers here:
Convert four digit year values to class Date
(5 answers)
Closed 5 years ago.
I note in R if one calls as.Date(as.character(2002:2013), format='%Y') the output is
[1] "2002-01-12" "2003-01-12" "2004-01-12" ...
I would like R to give me the first of the month instead. I could supply the whole date, paste(2002, '01', '01', sep='-'), but am curious why the year-only format imputes the 12th of the month and also to see other solutions.
Ah, just found my answer: The missing sections of the Date object (month/day) are imputed from today's date (System Date).

How to get week starting date from a date in R [duplicate]

This question already has answers here:
How to find Previous Sunday in R
(4 answers)
Closed 5 years ago.
I have a dataset with a column containing dates. I want to find the week starting dates for those date values.
I get the week number using week function from lubridate.
For example,
week(as.Date("04/20/2017", "%m/%d/%Y"))
#Solution
[1] 16
Instead of weeknum, is there a way to get the starting date of the week? In this case I am expecting either "04/16/2017" or "04/17/2017". I am not very particular if the week starts from Sunday or Monday.
I looked at this question, but didn't get much from it.
Use the floor_date function from the lubridate package.
library("lubridate")
floor_date(as.Date("04/20/2017", "%m/%d/%Y"), unit="week")
You can use below
as.Date(format(as.Date("04/20/2017", "%m/%d/%Y"),"%Y-%W-1"),"%Y-%W-%u")
[1] "2017-04-17"

as.Date keeps on returning NAs [duplicate]

This question already has answers here:
How to convert a character string date to date class if day value is missing
(1 answer)
Converting year and month ("yyyy-mm" format) to a date?
(9 answers)
Closed 6 years ago.
So I've been through some Stack Exchange answers, and I can't resolve this.
I have a column in a dataframe that has dates as characters as follows
2011-12
2012-04
2011-10
etc
I would like to convert these to date formats which I have tried to do as follows:
Tots$DatesMerge<-as.Date(Tots$DatesMerge,"%Y-%m")
but I get NA's back all the time.
I tried to do as here but no joy. I'm really not sure what I'm doing wrong.
I'd say as.Date won't be able to work on values where there's no day of the month. You could try with zoo, as long as you don't mind it coming out as a yearmon class:
library( zoo )
as.yearmon( Tots$DatesMerge )
Alternatively, you can specify a day of the month to use as a dummy:
as.Date( paste0( Tots$DatesMerge, "-15" ) )
Edit: there is already an answer and it is a duplicate, but I suppose the explanation can be useful for further readers, so I'll leave it.
Explanation
This comes from the documentation in R, "Dates are represented as the number of days since 1970-01-01, with negative values for earlier dates".
In R, dates are thus dependent on year, month and days or at least an integer that represent the span (in days) from or to 1970-01-01. As such, the base Dates package in R cannot convert the data formated in years and month into dates since there are no days.
Solution
As a consequence, you have the option, if you go with the base R package, to provide a a day that would be used to convert your data.
Tots$DatesMerge <- as.Date(paste0(Tots$DatesMerge,"01"),"%Y-%m-%d")

Resources