[R] using ifelse to remove NA's from specific columns of a data frame containing strings and numbers

Bert Gunter gunter.berton at gene.com
Thu Nov 15 15:46:15 CET 2012


David:

You seem to be getting lost in basic R tasks. Have you read the Intro
to R tutorial? If not, do so, as this should tell you how to do what
you need. If so, re-read the sections on indexing ("["), replacement,
and NA's. Also read about character vectors and factors.

-- Bert

On Thu, Nov 15, 2012 at 3:19 AM, David Romano <dromano at stanford.edu> wrote:
> Hi everyone,
>
> I have a data frame one of whose columns is a character vector and the rest
> are numeric, and in debugging a script, I noticed that an ifelse call seems
> to be coercing the character column to a numeric column, and producing
> unintended values as a result.   Roughly, here's what I tried to do:
>
> df: a data frame with, say, the first column as a character column and the
> second and third columns numeric.
>
> also: NA's occur only in the numeric columns, and if they occur in one,
> they occur in the other as well.
>
> I wanted to replace the NA's in column 2 with 0's and the ones in column 3
> with 1's, so first I did this:
>
>> na.replacements <-ifelse(col(df)==2,0,1).
>
> Then I used a second ifelse call to try to remove the NA's as I wanted,
> first by doing this:
>
>> clean.df <- ifelse(is.na(df), na.replacements, df),
>
> which produced a list of lists vaguely resembling df, with the NA's mostly
> intact, and so then I tried this:
>
>> clean.df <- ifelse(is.na(df), na.replacements, unlist(df)),
>
> which seems to work if all the columns are numeric, but otherwise changes
> strings to numbers.
>
> I can't make sense of the help documentation enough to clear this up, but
> my guess is that the "yes" and "no" values passed to ifelse need to be
> vectors, in which case it seems I'll have to use another approach entirely,
> but even if is not the case and lists are acceptable, I'm not sure how to
> convert a mixed-mode data frame into a vector-like list of elements (which
> I would hope would work).
>
> I'd be grateful for any suggestions!
>
> Thanks,
> David Romano
>
>         [[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.



-- 

Bert Gunter
Genentech Nonclinical Biostatistics

Internal Contact Info:
Phone: 467-7374
Website:
http://pharmadevelopment.roche.com/index/pdb/pdb-functional-groups/pdb-biostatistics/pdb-ncb-home.htm



More information about the R-help mailing list