How about the following, which is both faster and simpler than either the as.Date(...) or sub(...) solutions discussed earlier:
substring(x,first=nchar(x)-2) require(microbenchmark) microbenchmark(format(as.Date(paste0(x,"-2016"),format='%d-%b-%Y'),'%b')) # 59.3 microseconds on my computer microbenchmark(sub( "^\\d+-([A-Za-z]{3})$", "\\1", x )) # 17.4 microseconds microbenchmark(substring(x,first=nchar(x)-2)) # 3.6 microseconds -Dan On Wed, Mar 9, 2016 at 5:08 PM, Jeff Newmiller <jdnew...@dcn.davis.ca.us> wrote: > How about slower? That is objective. > > I use dates all the time so I am quite familiar with what they are good > for. However, I prefer to avoid inventing information such as which year > the date should have included unless I have to based on knowledge of the > data source. It is not good to mislead the consumer of output about the > existence of year information if it wasn't there to begin with. > -- > Sent from my phone. Please excuse my brevity. > > On March 9, 2016 4:49:18 PM PST, "Dalthorp, Daniel" <ddalth...@usgs.gov> > wrote: >> >> Good point about 29-Feb...fixed in the following: >> >> format(as.Date(paste0(x,"-2016"),format='%d-%b-%Y'),'%b') >> >> # Also: The date functions can be used to easily calculate passage of >> time and offer good flexibility for formatting output. >> >> -Dan >> >> P.S. "harder to understand" is in the eye of the beholder (as is >> "recommended"). >> >> >> >> On Wed, Mar 9, 2016 at 4:39 PM, Jeff Newmiller <jdnew...@dcn.davis.ca.us> >> wrote: >> >>> Still not recommended. That takes more steps, is harder to understand, >>> and will break when given "29-Feb" as input. >>> -- >>> Sent from my phone. Please excuse my brevity. >>> >>> On March 9, 2016 4:15:31 PM PST, "Dalthorp, Daniel" <ddalth...@usgs.gov> >>> wrote: >>>> >>>> Or: >>>> >>>> x <- c( "3-Oct", "10-Nov" ) >>>> format(as.Date(paste0(x,rep("-1970",length(x))),format='%d-%b-%Y'),'%b') >>>> >>>> # the 'paste0' appends a year to the text vector >>>> # the 'as.Date' interprets the strings as dates with format >>>> 10-Jun-2016 (e.g.) >>>> # the 'format' returns a string with date in format '%b' (which is just >>>> the name of the month) >>>> >>>> On Wed, Mar 9, 2016 at 3:52 PM, Jeff Newmiller < >>>> jdnew...@dcn.davis.ca.us> wrote: >>>> >>>>> Your dates are incomplete (no year) so I suggest staying away from the >>>>> date functions for this. Read ?regex and ?sub. >>>>> >>>>> x <- c( "3-Oct", "10-Nov" ) >>>>> m <- sub( "^\\d+-([A-Za-z]{3})$", "\\1", x ) >>>>> >>>>> -- >>>>> Sent from my phone. Please excuse my brevity. >>>>> >>>>> On March 9, 2016 10:14:25 AM PST, KMNanus <kmna...@gmail.com> wrote: >>>>> >I have a series of dates in format 3-Oct, 10-Oct, 20-Oct, etc. >>>>> > >>>>> >I want to create a variable of just the month. If I convert the date >>>>> >to a character string, substr is ineffective because some of the dates >>>>> >have 5 characters (3-Oct) and some have 6 (10-Oct). >>>>> > >>>>> >Is there a date function that accomplishes this easily? >>>>> > >>>>> >Ken >>>>> >kmna...@gmail.com >>>>> >914-450-0816 (tel) >>>>> >347-730-4813 (fax) >>>>> > >>>>> > >>>>> > >>>>> >______________________________________________ >>>>> >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. >>>>> >>>> >>>> >>>> >>>> -- >>>> Dan Dalthorp, PhD >>>> USGS Forest and Rangeland Ecosystem Science Center >>>> Forest Sciences Lab, Rm 189 >>>> 3200 SW Jefferson Way >>>> Corvallis, OR 97331 >>>> ph: 541-750-0953 >>>> ddalth...@usgs.gov >>>> >>>> >> >> >> -- >> Dan Dalthorp, PhD >> USGS Forest and Rangeland Ecosystem Science Center >> Forest Sciences Lab, Rm 189 >> 3200 SW Jefferson Way >> Corvallis, OR 97331 >> ph: 541-750-0953 >> ddalth...@usgs.gov >> >> -- Dan Dalthorp, PhD USGS Forest and Rangeland Ecosystem Science Center Forest Sciences Lab, Rm 189 3200 SW Jefferson Way Corvallis, OR 97331 ph: 541-750-0953 ddalth...@usgs.gov [[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.