[R] Lowest year among several variables

Petr Savicky savicky at cs.cas.cz
Tue May 8 22:06:09 CEST 2012


On Tue, May 08, 2012 at 02:50:47PM -0500, Jeff wrote:
> 
> ...still new to R and trying to figure this one out.
> 
> I have a number of variables x, y, z, etc. in a data frame.
> 
> Each contains a 2 digit year (e.g., 80, 81, 82) representing the 
> first year that something occurred. Each variable represents a 
> different type of event.
> 
> If the event did not occur at all, the variable has the value 0 (zero).
> 
> I need to create a new variable having the value of the earliest year 
> among the set of variables.
> 
> If none of the events occurred (all variables = 0), then the new 
> variable should also be zero.
> 
> e.g.,
> 
> Original
> x    y   z
> 80 82 83
> 85  76  90
> 90  0   86
> 0   0   0
> 
> 
> New variable
> 80
> 76
> 86
> 0

Hi.

If all years are at most 99, then try the following

  dat <- data.frame(x=c(80, 85, 90, 0), y=c(82, 76, 0, 0), z=c(83, 90, 86, 0))
  dat[dat == 0] <- Inf
  out <- pmin(dat$x, dat$y, dat$z)
  out[out == Inf] <- 0
  out

  [1] 80 76 86  0

Hope this helps.

Petr Savicky.



More information about the R-help mailing list