Skip to content

ifelse problem

2 messages · Randy Walters, Charilaos Skiadas

#
Could someone help me with the following code snippet.  The results are not
what I expect:
[1] NA  1  2 NA NA NA NA NA NA NA
[1] Declined  Bound     Bound     Bound     Bound     Bound     Declined 
Dead      Declined 
[10] Not Taken
Levels: Bound Dead Declined Not Taken
+                     
ifelse(as.character(Sheet1$Claims)=="NA",0,Sheet1$Claims))
[1] 99999     1     2    NA    NA    NA 99999 99999 99999 99999
Here is Str(Sheet1)

 $ Claims                     : num  NA 1 2 NA NA NA NA NA NA NA ...
 $ SubmissionStatus           : Factor w/ 4 levels "Bound","Dead",..: 3 1 1
1 1 1 3 2 3 4 ...


I would expect Sheet1$Claimsnum[4] to be 0, since the true condition of the
2nd ifelse evaluations to 0.
Without the "as.character" the results are still not the way I want them:
+                      ifelse(Sheet1$Claims==NA,0,Sheet1$Claims))
[1] 99999    NA    NA    NA    NA    NA 99999 99999 99999 99999
Much thanks!,

Randy
#
To check for NA, use is.na. For instance your second ifelse should read:

ifelse(is.na(Sheet1$Claims),0,Sheet1$Claims))

Converting Sheet1$Claims to character doesn't have the effect you  
think it does. NA is still NA, it does not become "NA". Try for  
instance:

as.character(NA)
as.character(NA) == "NA"

Haris Skiadas
Department of Mathematics and Computer Science
Hanover College
On Dec 20, 2007, at 10:26 AM, Randy Walters wrote: