From a vector with characters to binary information
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