On Jun 3, 2009, at 9:45 PM, Jason Rupert wrote:


Example code it shown below.

I think I am doing this the hard way. I'm just trying to get the full year value from an array of dates. An example array is shown below. Right now, I'm using a "for" loop to pull the year out of a list where the dates were split up into their individual components.

This seems to work, but just wondering if there is an easier way.

Thanks for any insights.

#*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~
HouseDates <- c("02/27/90", "02/27/91", "01/14/92", "02/28/93", "02/01/94", "02/01/95", "02/01/96")

# ?as.Date
HouseDatesFormatted<-as.Date(HouseDates, "%m/%d/%y")

HouseDatesFormatted

HouseDatesList<-strsplit(as.character(HouseDatesFormatted), "-", fixed=TRUE)

HouseYear_array<-NULL
length_array<-length(HouseDatesList)
for(ii in 1:length_array)
{
       HouseYear<-HouseDatesList[[ii]][1]

       HouseYear_array<-c(HouseYear_array, HouseYear)
}

as.character(HouseYear_array)

# Desired:
# [1] "1990" "1991" "1992" "1993" "1994" "1995" "1996"



Yep, definitely an easier way:

HouseDates <- c("02/27/90", "02/27/91", "01/14/92", "02/28/93", "02/01/94", "02/01/95", "02/01/96")

# You can convert the entire *vector* to a Date and then format the result to Year only.
# See ?format.Date

> format(as.Date(HouseDates, "%m/%d/%y"), "%Y")
[1] "1990" "1991" "1992" "1993" "1994" "1995" "1996"


One of the key things to bear in mind about R, is that in general (there are exceptions), avoiding explicit 'for' loops is a paradigm. R is by design, a vectorized language. That means that many operations are designed to take a vector, matrix or array and operate on it in a "whole object" fashion. Essentially, iterate an operation over the entire object with a single function call.

If you are coming from a different programming language, this is perhaps one of the more challenging perspectives to achieve. But once you make that leap, you will look back and be amazed at how you ever managed to get things before (and how many lines of code it took...)

If you have not, read through 'An Introduction to R', provided with your R distribution or on the R web site. It's a good place to start and there are other contributed materials and books listed on the R web site that can supplement that as you progress.

HTH,

Marc Schwartz

______________________________________________
R-help@r-project.org mailing list
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.

Reply via email to