[R] if else elseif for data frames

arun smartpink111 at yahoo.com
Mon Aug 13 03:39:33 CEST 2012



HI,

Much better solution:
library(car)
 set.seed(1)
 dat2<-data.frame(col1=c(sample(c("high","Neutral","low"),10,replace=TRUE)),col2=rep(NA,10))
 x<-dat2$col1
 dat2$col2<-recode(x,'"high"="H";"Neutral"="N";"low"="L"')
dat2
#      col1 col2
#1     high    H
#2  Neutral    N
#3  Neutral    N
#4      low    L
#5     high    H
#6      low    L
#7      low    L
#8  Neutral    N
#9  Neutral    N
#10    high    H

A.K.


________________________________
From: Sachinthaka Abeywardana <sachin.abeywardana at gmail.com>
To: arun <smartpink111 at yahoo.com> 
Sent: Sunday, August 12, 2012 9:18 PM
Subject: Re: [R] if else elseif for data frames


yup looks good.

thanks 
Sachin


On Mon, Aug 13, 2012 at 11:17 AM, arun <smartpink111 at yahoo.com> wrote:

Hi,
>
>Try this,
>
>set.seed(1)
> dat2<-data.frame(col1=c(sample(c("high","Neutral","low"),10,replace=TRUE)),col2=rep(NA,10))
>dat2$col2[dat2$col1=="high"]<-"H"
> dat2$col2[dat2$col1=="Neutral"]<-"N"
> dat2$col2[dat2$col1=="low"]<-"L"
> dat2
>#      col1 col2
>#1     high    H
>#2  Neutral    N
>#3  Neutral    N
>#4      low    L
>#5     high    H
>#6      low    L
>#7      low    L
>#8  Neutral    N
>#9  Neutral    N
>#10    high    H
>
>
>Not sure if this is okay for you,
>A.K.rr
>
>
>A.K.
>
>________________________________
>From: Sachinthaka Abeywardana <sachin.abeywardana at gmail.com>
>To: arun <smartpink111 at yahoo.com>
>Cc: R help <r-help at r-project.org>
>Sent: Sunday, August 12, 2012 9:07 PM
>Subject: Re: [R] if else elseif for data frames
>
>
>
>The thing is I have about 10 cases. I saw the ifelse statement but was wondering if there was a cleaner method of doing it. The coding will get really messy when I write all 10 cases.
>
>Cheers,
>Sachin
>
>
>On Mon, Aug 13, 2012 at 11:04 AM, arun <smartpink111 at yahoo.com> wrote:
>
>Hi,
>>Try this:
>>dat1<-data.frame(col1=c(rep("high",3),rep("Neutral",3),rep("low",4)))
>> dat1$col2<-ifelse(dat1$col1=="high",dat1$col2<-"H",ifelse(dat1$col1=="Neutral",dat1$col2<-"N","L"))
>>dat1
>>      col1 col2
>>1     high    H
>>2     high    H
>>3     high    H
>>4  Neutral    N
>>5  Neutral    N
>>6  Neutral    N
>>7      low    L
>>8      low    L
>>9      low    L
>>10     low    L
>>
>>A.K.
>>
>>
>>
>>
>>
>>----- Original Message -----
>>From: Sachinthaka Abeywardana <sachin.abeywardana at gmail.com>
>>To: r-help at r-project.org
>>Cc:
>>Sent: Sunday, August 12, 2012 8:43 PM
>>Subject: [R] if else elseif for data frames
>>
>>Hi all,
>>
>>It seems like I cannot use normal 'if' for data frames. What would be the
>>best way to do the following.
>>
>>if data$col1='high'
>>    data$col2='H'
>>else if data$col1='Neutral'
>>    data$col2='N'
>>else if data$col='low'
>>   data$col2='L'
>>else
>>   #chuch a warning?
>>
>>
>>Note that col2 was not an existing column and was newly assigned for this
>>task.
>>
>>Thanks,
>>Sachin
>>
>>    [[alternative HTML version deleted]]
>>
>>______________________________________________
>>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.
>>
>>
>



More information about the R-help mailing list