[R] From a vector with characters to binary information
Berend Hasselman
bhh at xs4all.nl
Sat Mar 30 09:59:18 CET 2013
On 29-03-2013, at 20:01, Hermann Norpois <hnorpois at gmail.com> wrote:
> Hello,
>
> I would like to transform a character vector into a "binary" vector
> ("keine" and " " become 0 and the rest 1).
>
>> dput (scm)
> c("keine", " ", "keine", "Erstgradverw.", "Mutter", "Erstgradverw.",
> "Erstgradverw.", "keine", " ", "Vater", "Erstgradverw.", "keine",
> "keine", "keine", "keine", " ", "Erstgradverw.", "keine", "keine",
> "Erstgradverw.")
>
> I tried:
>
> scoref <- sapply (scm, function (x) ifelse (x == "keine"|x==" ", 0, 1))
>
> or
>
> scoref <- sapply (scm, function (x) ifelse (x == "keine"|x==" ", x <- 0, x
> <- 1))
>
> And this is the output:
>
>> scoref
> keine keine Erstgradverw. Mutter
> 0 0 0 1 1
> Erstgradverw. Erstgradverw. keine Vater
> 1 1 0 0 1
> Erstgradverw. keine keine keine keine
> 1 0 0 0 0
> Erstgradverw. keine keine Erstgradverw.
> 0 1 0 0 1
>
> How do I get rid off the text. Is there an alternative method?
>
First of all read the help page for sapply (and other apply's) in particular the part describing argument USE.NAMES.
You don't need to use ifelse: a simple if/else will do. x is a scalar in your function and ifelse is overkill. So you also don't need to use |.
So
scoref <- sapply (scm, function (x) if (x == "keine" || x==" ") 0 else 1, USE.NAMES=FALSE)
or
scoref <- sapply (scm, function (x) 1-(x == "keine"||x==" "), USE.NAMES=FALSE)
Berend
More information about the R-help
mailing list