I agree that having convenience functions can be in the spirit of R, but I find that lubridate puts the cart before the horse so I avoid it. Specifically, the conceptual sequence
- convert character to timestamp in GMT - "fix" erroneous timestamps to correct time zone more inefficient and error-prone than - convert character to timestamp specifying correct timezone or - specify default timezone - convert character to timestamp using default timezone but apparently others disagree so we have a whole sub-culture working with GMT by default. On December 19, 2019 4:45:41 AM PST, Eric Berger <ericjber...@gmail.com> wrote: >[ ... taking the bait regarding the "unnecessary discussion" ... ] > >The "Fortune nomination" that Bert sent includes the phrase > >"...then it is best to tell R ..." > >What metric is being used to do the ranking to get the "best"? If the >metric is related to "providing the most unambiguous information to R" >then I agree that providing the structure explicitly is best. >However, often what is "best" is to minimize programmer time. With >lubridate, I know that providing the clue 'ymd' is enough to have it >perform the date conversion correctly. That is minimal effort on my >part, >which gives it a top ranking from my point of view. > >Also, to broaden this "unnecessary discussion" I would argue that the >lubridate package may even be more "in the spirit of R" than what is >being >proposed with the explicit structural information. Clearly R is far >from >being a strongly typed language. If you really want to provide explicit >structural information maybe you would be better off with a language >such >as C++. :-) > > > > > >On Thu, Dec 19, 2019 at 2:30 PM Bert Gunter <bgunter.4...@gmail.com> >wrote: > >> >> >> "But the important point is: >> If you know the structure of the data you want to >> parse, then it is best to tell R (or any other language) >> this structure explicitly. " >> >> Fortune nomination! >> >> -- Bert >> >> >> >> >> >> >> Thu, Dec 19, 2019, 2:49 AM Enrico Schumann <e...@enricoschumann.net> >wrote: >> >>> >>> Quoting Eric Berger <ericjber...@gmail.com>: >>> >>> > Martin writes: "there's really no reason for going beyond base R" >>> > >>> > I disagree. Lubridate is a fantastic package. I use it all the >time. It >>> > makes working with dates really easy, as evidenced by John Kane's >>> > suggestion. I strongly recommend learning to work with it. >>> > >>> > The bottom line: as is often the case, there are many different >ways to >>> > accomplish a task in R. >>> >>> I apologise beforehand if this sparks an unnecessary discussion ;-) >>> >>> But the important point is: >>> If you know the structure of the data you want to >>> parse, then it is best to tell R (or any other language) >>> this structure explicitly. >>> >>> >>> > On Thu, Dec 19, 2019 at 10:31 AM Martin Maechler < >>> maech...@stat.math.ethz.ch> >>> > wrote: >>> > >>> >> >>>>> John Kane >>> >> >>>>> on Tue, 17 Dec 2019 20:28:17 -0500 writes: >>> >> >>> >> > library(lubridate) >>> >> > gs$dat1 <- mdy(gs$date) >>> >> >>> >> there's really no reason for going beyond base R. >>> >> >>> >> Using the proper format as per Patrick and Peter's advice >>> >> (below) is perfectly clear and actually >>> >> more robust (for the next data set etc) >>> >> than going via "good guessing" in extra packages. >>> >> >>> >> > On Tue, 17 Dec 2019 at 18:38, peter dalgaard ><pda...@gmail.com> >>> >> wrote: >>> >> >> >>> >> >> ...and switch the order, and use %y for 2-digit years. >>> >> >> >>> >> >> > On 17 Dec 2019, at 23:57 , Patrick (Malone Quantitative) >< >>> >> mal...@malonequantitative.com> wrote: >>> >> >> > >>> >> >> > Try putting / instead of - in your format, to match the >data. >>> >> >> > >>> >> >> > On Tue, Dec 17, 2019 at 5:52 PM Val <valkr...@gmail.com> >>> wrote: >>> >> >> >> >>> >> >> >> Hi All, >>> >> >> >> >>> >> >> >> I wanted to to convert character date mm/dd/yy to >>> YYYY-mm-dd >>> >> >> >> The sample data and my attempt is shown below >>> >> >> >> >>> >> >> >> gs <-read.table(text="ID date >>> >> >> >> A1 09/27/03 >>> >> >> >> A2 05/27/16 >>> >> >> >> A3 01/25/13 >>> >> >> >> A4 09/27/19",header=TRUE,stringsAsFactors=F) >>> >> >> >> >>> >> >> >> Desired output >>> >> >> >> ID date d1 >>> >> >> >> A1 09/27/03 2003-09-27 >>> >> >> >> A2 05/27/16 2016-05-27 >>> >> >> >> A3 01/25/13 2012-04-25 >>> >> >> >> A4 09/27/19 2019-09-27 >>> >> >> >> >>> >> >> >> I used this >>> >> >> >> gs$d1 = as.Date(as.character(gs$date), format = >"%Y-%m-%d") >>> >> >> >> >>> >> >> >> but I got NA's. >>> >> >> >> >>> >> >> >> How do I get my desired result? >>> >> >> >> Thank you. >>> >> >> >> >>> >> >> >>> >> >> -- >>> >> >> Peter Dalgaard, Professor, >>> >> >> Center for Statistics, Copenhagen Business School >>> >> >> Solbjerg Plads 3, 2000 Frederiksberg, Denmark >>> >> >> Phone: (+45)38153501 >>> >> >> Office: A 4.23 >>> >> >> Email: pd....@cbs.dk Priv: pda...@gmail.com >>> >> >> >>> >> >>> >> > -- >>> >> > John Kane >>> >> > Kingston ON Canada >>> >>> >>> >>> -- >>> Enrico Schumann >>> Lucerne, Switzerland >>> http://enricoschumann.net >>> >>> ______________________________________________ >>> R-help@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. >>> >>> > > [[alternative HTML version deleted]] > >______________________________________________ >R-help@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. -- Sent from my phone. Please excuse my brevity. ______________________________________________ R-help@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.