ifelse problem
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:
Could someone help me with the following code snippet. The results are not what I expect:
Sheet1$Claims[1:10]
[1] NA 1 2 NA NA NA NA NA NA NA
Sheet1[1:10,"SubmissionStatus"]
[1] Declined Bound Bound Bound Bound Bound Declined Dead Declined [10] Not Taken Levels: Bound Dead Declined Not Taken
Sheet1$Claimsnum <- NA Sheet1$Claimsnum <- ifelse(Sheet1$SubmissionStatus != "Bound",99999,
+ ifelse(as.character(Sheet1$Claims)=="NA",0,Sheet1$Claims))
Sheet1$Claimsnum[1:10]
[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:
Sheet1$Claimsnum <- ifelse(Sheet1$SubmissionStatus != "Bound",99999,
+ ifelse(Sheet1$Claims==NA,0,Sheet1$Claims))
Sheet1$Claimsnum[1:10]
[1] 99999 NA NA NA NA NA 99999 99999 99999 99999
Much thanks!, Randy -- View this message in context: http://www.nabble.com/ifelse-problem- tp14438449p14438449.html Sent from the R help mailing list archive at Nabble.com.