[R] Ifelse statement on a factor level data frame

Kate Ignatius kate.ignatius at gmail.com
Sun Sep 28 15:38:33 CEST 2014


Strange that,

I did put everything with as.character but all I got was the same...

class of dbpmn[,2]) = factor
class of dbpmn[,21]  = factor
class of  dbpmn[,20] = data.frame

This has to be a problem ???

I can put reproducible output here but not sure if this going to of
help here. I think its all about factors and data frames and
characters...

K.

On Sun, Sep 28, 2014 at 1:15 AM, Jim Lemon <jim at bitwrit.com.au> wrote:
> On Sun, 28 Sep 2014 12:49:41 AM Kate Ignatius wrote:
>> Quick question:
>>
>> I am running the following code on some variables that are factors:
>>
>> dbpmn$IID1new <- ifelse(as.character(dbpmn[,2]) ==
>> as.character(dbpmn[,(21)]), dbpmn[,20], '')
>>
>> Instead of returning some value it gives me this:
>>
>> c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1))
>>
>> Playing around with the code, gives me some kind of variation to it.
>> Is there some way to get me what I want.  The variable that its
>> suppose to give back is a bunch of sampleIDs.
>>
> Hi Kate,
> If I create a little example:
>
> dbpmn<-data.frame(V1=factor(sample(LETTERS[1:4],20,TRUE)),
>   V2=factor(sample(LETTERS[1:4],20,TRUE)),
>   V3=factor(sample(LETTERS[1:4],20,TRUE)))
> dbpmn[4]<-
>  ifelse(as.character(dbpmn[,1]) == as.character(dbpmn[,(2)]),
>  dbpmn[,3],"")
> dbpmn
>    V1 V2 V3 V4
> 1   B  D  C
> 2   C  A  D
> 3   C  B  A
> 4   A  B  C
> 5   B  D  B
> 6   D  D  A  1
> 7   D  D  D  4
> 8   B  C  A
> 9   B  D  B
> 10  D  C  A
> 11  A  D  C
> 12  A  C  B
> 13  A  A  A  1
> 14  D  C  A
> 15  C  D  B
> 16  A  A  B  2
> 17  A  C  C
> 18  B  B  C  3
> 19  C  C  C  3
> 20  D  D  D  4
>
> I get what I expect, the numeric value of the third element in dbpmn
> where the first two elements are equal. I think what you want is:
>
> dbpmn[4]<-
>  ifelse(as.character(dbpmn[,1]) == as.character(dbpmn[,(2)]),
>  as.character(dbpmn[,3]),"")
> dbpmn
>    V1 V2 V3 V4
> 1   B  D  C
> 2   C  A  D
> 3   C  B  A
> 4   A  B  C
> 5   B  D  B
> 6   D  D  A  A
> 7   D  D  D  D
> 8   B  C  A
> 9   B  D  B
> 10  D  C  A
> 11  A  D  C
> 12  A  C  B
> 13  A  A  A  A
> 14  D  C  A
> 15  C  D  B
> 16  A  A  B  B
> 17  A  C  C
> 18  B  B  C  C
> 19  C  C  C  C
> 20  D  D  D  D
>
> Jim
>



More information about the R-help mailing list