[R] Creat new column based on condition

Frank E Harrell Jr f.harrell at vanderbilt.edu
Fri Apr 21 23:45:12 CEST 2006

```Duncan Murdoch wrote:
> On 4/21/2006 4:05 PM, Sachin J wrote:
>
>>Hi,
>>
>>  How can I accomplish this task in R?
>>
>>    V1
>>    10
>>    20
>>    30
>>    10
>>    10
>>    20
>>
>>  Create a new column V2 such that:
>>  If V1 = 10 then V2 = 4
>>  If V1 = 20 then V2 = 6
>>  V1 =   30 then V2 = 10
>
>
> Gabor's solution is fine; something that looks a little bit more like
>
>   V2 <- NA
>   V2 <- ifelse( V1 == 10, 4, V2)
>   V2 <- ifelse( V1 == 20, 6, V2)
>   V2 <- ifelse( V1 == 30, 10, V2)

or

V2 <- 4*(V1==10)+6*(V2==20)+10*(V2==30)
V2[V2==0] <- NA

Frank

>
> or
>
>   V2 <- ifelse( V1 == 10, 4,
>           ifelse( V1 == 20, 6,
>             ifelse( V1 == 30, 10, NA )))
>
> (where the NA is to handle any unexpected case where V1 isn't 10, 20 or
> 30).  My preference would be to use just one assignment, and if I was
> sure 10, 20 and 30 were the only possibilities, would use
>
>   V2 <- ifelse( V1 == 10, 4,
>           ifelse( V1 == 20, 6, 10 ))
>
> Duncan Murdoch
>
>>
>>  So the O/P looks like this
>>
>>    V1  V2
>>    10   4
>>    20   6
>>    30  10
>>    10   4
>>    10   4
>>    20   6
>>