[R] Multiply variable by condition

Sarah Goslee sarah.goslee at gmail.com
Fri Jun 1 23:26:57 CEST 2012


On Fri, Jun 1, 2012 at 5:23 PM, David Winsemius <dwinsemius at comcast.net> wrote:
>
> On Jun 1, 2012, at 2:37 PM, Sarah Goslee wrote:
>
>> There are several ways. The easiest to understand is probably using
>> if() statements: see ?if for help and examples.
>>
>> Sarah
>>
> I would have thought ifelse() to be the necessary function, but for such
> simple cases I find boolean math to be clearer. (I understand indivdiual
> preferences vary in this area.)

That depends on whether you interpret "two variables" as scalars or
vectors. Since the original poster did not provide any example
whatsoever, I went with one options, while David chose the other.

This clearly illustrates the importance of following the posting
guide, as if we needed any more such examples.

Sarah


>> dft <-data.frame(Y=1, M=sample(c(1,3,9),20,repl=TRUE))
>
>> dft$res <- with(dft, Y*( (M==1) *1 + (M==3)*2 +(M==9)*3.6678) )
>> dft
>   Y M    res
> 1  1 1 1.0000
> 2  1 9 3.6678
> 3  1 3 2.0000
> 4  1 1 1.0000
> 5  1 1 1.0000
> 6  1 9 3.6678
> 7  1 9 3.6678
> 8  1 9 3.6678
> 9  1 3 2.0000
> 10 1 9 3.6678
> 11 1 9 3.6678
> 12 1 9 3.6678
> 13 1 1 1.0000
> 14 1 3 2.0000
> 15 1 3 2.0000
> 16 1 1 1.0000
> 17 1 1 1.0000
> 18 1 3 2.0000
> 19 1 9 3.6678
> 20 1 9 3.6678
>
> --
> David
>>
>> On Fri, Jun 1, 2012 at 11:34 AM, jfca283 <jfca283 at gmail.com> wrote:
>>>
>>> Hi
>>> I need to do something very simple. I have 2 variables, Y and M. I need
>>> to
>>> multiply Y by 1 if M=1, by 2 if M=3 and by 3.6678 if M=9. How do i make
>>> it?
>>> Thanks for your time and interest
>>>
>>
> --
>
> David Winsemius, MD
> West Hartford, CT
>



-- 
Sarah Goslee
http://www.functionaldiversity.org



More information about the R-help mailing list