[R] how to recode with an if-type statement

Don MacQueen macq at llnl.gov
Mon Sep 14 17:39:53 CEST 2009


I suppose there are a couple of ways...

if (numbers==1) {
   distot <-
} else if (numbers ==2) {
    distot <-
} else if (numbers==3) {
    distot <-
} else distot <- NA

(letting you fill in the right hand side within each block)

There's also

distot <- switch(numbers,
   w9zd9_1,
   (w9zd9_1 + w9zd9_2)/2,
   (w9zd9_1 + w9zd9_2 + w9zd9_3)/3,
   NA)

In both cases I added an explicit result in case numbers is not one 
of the expected values.

Generalizing this to an arbitrary value of numbers would be trickier.

-Don


At 11:05 AM -0400 9/14/09, Casey Klofstad wrote:
>I'm sure this is easy, but I'm having a hard time figuring out how to
>recode some data in R.
>
>I have a variable "numpeers" which is valued 1, 2, or 3. I also have
>three other variables called "w9zd9_1," "w9zd9_2," and "w9zd9_3." I
>want to use these variables to create a new item called "distot."
>
>Specifically, here is what I want to do:
>
>-if numpeers=1, then distot=w9zd9_1
>
>-if numpeers=2, then distot=(w9zd9_1 + w9zd9_2)/2
>
>-if numpeers=3, then distot=(w9zd9_1 + w9zd9_2 + w9zd9_3)/3
>
>Thanks, in advance, for the help!
>
>--
>Casey A. Klofstad
>University of Miami
>Department of Political Science
>Coral Gables, FL
>
>klofstad at gmail.com
>http://*www.*as.miami.edu/personal/cklofstad/
>
>______________________________________________
>R-help at 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.


-- 
--------------------------------------
Don MacQueen
Environmental Protection Department
Lawrence Livermore National Laboratory
Livermore, CA, USA
925-423-1062




More information about the R-help mailing list