[R] Date Time in R

Hadley Wickham h.wickham at gmail.com
Tue Jul 26 18:15:44 CEST 2016


I'd recommend reading up on how to create a minimal reproducible
example (e.g. http://r4ds.had.co.nz/exploratory-data-analysis.html).
It is unlikely anyone will be able to help you unless you can reliably
communicate _exactly_ what you're doing. Unlike human languages,
computer languages are extremely strict, and just one wrong character
can make a big difference.

Hadley

On Tue, Jul 26, 2016 at 10:45 AM, Shivi Bhatia <shivipmp82 at gmail.com> wrote:
> Hi David please see the code and some reproducible data:
> eir$date<- as.Date(eir$date,format = "%m-%d-%y")  then i had used the
> lubridate library to help with the dates:
> install.packages("lubridate")
> library(lubridate)
> eir$date <- mdy(eir$date)
> weekdays <- wdy(eir$date)
> week names <- wdy(eir$date, label = TRUE)
>
> This the output from the file:
>
> structure(list(date = structure(c(NA_real_, NA_real_, NA_real_), class =
> "Date"),
>
> month = structure(c(2L, 2L, 2L), .Label = c("Jun","May"), class = "factor"),
>
> day = c(30L, 30L, 30L),
>
> weekday = structure(c(2L,2L, 2L), .Label = c("Fri", "Mon", "Sat", "Sun",
> "Thu", "Tue","Wed"), class = "factor"),
>
> survey_rating = c(3L, 2L, 3L), query_status = c("Yes", "Don't know","No"),
>
>  a = c("05-30-16", "05-30-16", "05-30-16")), .Names = c("date","month",
> "day", "weekday", "survey_rating"), row.names = c(NA, 3L), class =
> "data.frame")
>
> There are several other variables that i have removed which are not
> relevant in this context.
>
> On Tue, Jul 26, 2016 at 8:55 PM, David L Carlson <dcarlson at tamu.edu> wrote:
>
>> Show us the output, don’t just tell us what you are seeing. If the dates
>> are correct in the csv file, show us the structure of the data frame you
>> created with read.csv() and show the command(s) you used to convert the
>> character data to date format. The solution is likely to be simple if you
>> will cut/paste the R console and not just describe what is happening.
>>
>>
>>
>> David C
>>
>>
>>
>> *From:* Shivi Bhatia [mailto:shivipmp82 at gmail.com]
>> *Sent:* Tuesday, July 26, 2016 10:08 AM
>> *To:* David L Carlson
>>
>> *Subject:* Re: [R] Date Time in R
>>
>>
>>
>> Hi David,
>>
>> This gives the results accurately. The first line shows all the variable
>> names and the rest shows all values stored for each of the variable. Here
>> date is appearing as correct.
>>
>>
>>
>> Thanks, Shivi
>>
>>
>>
>> On Tue, Jul 26, 2016 at 7:39 PM, David L Carlson <dcarlson at tamu.edu>
>> wrote:
>>
>> What does this produce?
>>
>> > readLines("YourCSVfilename.csv", n=5)
>>
>> If the data are in Excel, the date format used in .csv files is not always
>> in the same as the format used when viewing dates in the spreadsheet.
>>
>> -------------------------------------
>> David L Carlson
>> Department of Anthropology
>> Texas A&M University
>> College Station, TX 77840-4352
>>
>>
>>
>> -----Original Message-----
>> From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of Shivi
>> Bhatia
>> Sent: Tuesday, July 26, 2016 7:42 AM
>> To: Marc Schwartz
>> Cc: R-help
>> Subject: Re: [R] Date Time in R
>>
>> Thanks Marc for the help. this really helps.
>> I think there is some issue with the data saved in csv format for this
>> variable as when i checked:
>> str(eir$date)- this results in :-
>> Date[1:5327], format: NA NA NA NA NA.
>>
>> Thanks again.
>>
>> On Tue, Jul 26, 2016 at 5:58 PM, Marc Schwartz <marc_schwartz at me.com>
>> wrote:
>>
>> > Hi,
>> >
>> > That eir$date might be a factor is irrelevant. There is an as.Date()
>> > method for factors, which does the factor to character coercion
>> internally
>> > and then calls as.Date.character() on the result.
>> >
>> > Using the example data below:
>> >
>> > eir <- data.frame(date = c("05-30-16", "05-30-16", "05-30-16",
>> >                            "05-30-16", "05-30-16", "05-30-16"))
>> >
>> > > str(eir)
>> > 'data.frame':   6 obs. of  1 variable:
>> >  $ date: Factor w/ 1 level "05-30-16": 1 1 1 1 1 1
>> >
>> > > eir
>> >       date
>> > 1 05-30-16
>> > 2 05-30-16
>> > 3 05-30-16
>> > 4 05-30-16
>> > 5 05-30-16
>> > 6 05-30-16
>> >
>> > eir$date <- as.Date(eir$date, format = "%m-%d-%y")
>> >
>> > > str(eir)
>> > 'data.frame':   6 obs. of  1 variable:
>> >  $ date: Date, format: "2016-05-30" ...
>> >
>> > > eir
>> >         date
>> > 1 2016-05-30
>> > 2 2016-05-30
>> > 3 2016-05-30
>> > 4 2016-05-30
>> > 5 2016-05-30
>> > 6 2016-05-30
>> >
>> > eir$days <- weekdays(eir$date)
>> >
>> > > str(eir)
>> > 'data.frame':   6 obs. of  2 variables:
>> >  $ date: Date, format: "2016-05-30" ...
>> >  $ days: chr  "Monday" "Monday" "Monday" "Monday" ...
>> >
>> > > eir
>> >         date   days
>> > 1 2016-05-30 Monday
>> > 2 2016-05-30 Monday
>> > 3 2016-05-30 Monday
>> > 4 2016-05-30 Monday
>> > 5 2016-05-30 Monday
>> > 6 2016-05-30 Monday
>> >
>> >
>> > I would check to be sure that you do not have any typos in your code.
>> >
>> > Regards,
>> >
>> > Marc Schwartz
>> >
>> >
>> > > On Jul 26, 2016, at 6:58 AM, Shivi Bhatia <shivipmp82 at gmail.com>
>> wrote:
>> > >
>> > > Hello Again,
>> > >
>> > > While i tried your solution as you suggested above it seems to be
>> > working.
>> > > Here is the output
>> > > temp<- dput(head(eir$date))
>> > > c("05-30-16", "05-30-16", "05-30-16", "05-30-16", "05-30-16",
>> "05-30-16")
>> > > however it still shows class(eir$date) as character and hence i cannot
>> > find
>> > > weekdays from this variable.
>> > >
>> > > Sorry but i still dont understand in totality how R reads dates even
>> > though
>> > > have tried enough.
>> > >
>> > > Regards, Shivi
>> > >
>> > >
>> > > On Tue, Jul 26, 2016 at 5:12 PM, Shivi Bhatia <shivipmp82 at gmail.com>
>> > wrote:
>> > >
>> > >> Thanks Duncan for the quick response. I will check again as you
>> > suggested.
>> > >> If that doesn't work i will share a reproducible example.
>> > >>
>> > >> Thanks again!!!!
>> > >>
>> > >> On Tue, Jul 26, 2016 at 4:43 PM, Duncan Murdoch <
>> > murdoch.duncan at gmail.com>
>> > >> wrote:
>> > >>
>> > >>> On 26/07/2016 7:05 AM, Shivi Bhatia wrote:
>> > >>>
>> > >>>> Hi Team,
>> > >>>>
>> > >>>> This scenario may have come across a number of times however i
>> checked
>> > >>>> nabble & SO and couldn't find a solution hence request assistance.
>> > >>>>
>> > >>>> I have a date variable in my data-set eir. The class of this var was
>> > >>>> character while i had read the file in r studio. Example of date -
>> > >>>> 05-30-16
>> > >>>>
>> > >>>> To change this i have used eir$date<- as.Date(eir$date, "%m-%d-%y").
>> > This
>> > >>>> converts it to a date variable. However when i check few obs
>> > >>>> with head(eir$date) all the results are <NA>.
>> > >>>>
>> > >>>
>> > >>> I think you don't have character data like that, because I see
>> > >>>
>> > >>>> as.Date("05-30-16", "%m-%d-%y")
>> > >>> [1] "2016-05-30"
>> > >>>
>> > >>> I'd guess eir$date is really a factor, because character data is
>> > >>> frequently changed to factor automatically.  If that's the case, this
>> > >>> should work for the conversion:
>> > >>>
>> > >>> as.Date(as.character(eir$date), "%m-%d-%y")
>> > >>>
>> > >>> If that doesn't work, you'll need to post something reproducible.
>> > >>>
>> > >>> Duncan Murdoch
>> > >>>
>> > >>> I also need to create weekdays from this date variable but until i
>> get
>> > >>>> this
>> > >>>> resolved i cant find a weekday. For weekday i have used:
>> > >>>> eir$week<- (eir$date)
>> > >>>> eir$week<- weekdays(as.Date(eir$week))
>> > >>>> class(eir$week)
>> > >>>> eir$week<- as.factor(eir$week)
>> > >>>> head(eir$week)
>> > >>>>
>> > >>>> Head of this eir$week results again as expected in <NA> but shows
>> > Levels:
>> > >>>> Friday Monday Saturday Sunday Thursday Tuesday Wednesday
>> > >>>>
>> > >>>> Not sure what i should do here. Kindly suggest.
>> >
>> >
>>
>>         [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> <https://urldefense.proofpoint.com/v2/url?u=https-3A__stat.ethz.ch_mailman_listinfo_r-2Dhelp&d=CwMFaQ&c=ODFT-G5SujMiGrKuoJJjVg&r=veMGHMCNZShld-KX-bIj4jRE_tP9ojUvB_Lqp0ieSdk&m=s9RjgM0-LqObg32B_ODUoHMjaBJSYFn0ccxorF0VRaQ&s=-2AvIVGKBvHIg4b3KBUCarOh98Mq95XbBM6rQR5o_Qw&e=>
>> PLEASE do read the posting guide
>> http://www.R-project.org/posting-guide.html
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__www.R-2Dproject.org_posting-2Dguide.html&d=CwMFaQ&c=ODFT-G5SujMiGrKuoJJjVg&r=veMGHMCNZShld-KX-bIj4jRE_tP9ojUvB_Lqp0ieSdk&m=s9RjgM0-LqObg32B_ODUoHMjaBJSYFn0ccxorF0VRaQ&s=Ldb33UyU9KMUXEsxxzwItyCFjZInukICij2jo66xaKg&e=>
>> and provide commented, minimal, self-contained, reproducible code.
>>
>>
>>
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.



-- 
http://hadley.nz



More information about the R-help mailing list