Skip to content
Back to formatted view

Raw Message

Message-ID: <971536df0904161424m290ff8fexe7f501d0c78a0eb8@mail.gmail.com>
Date: 2009-04-16T21:24:52Z
From: Gabor Grothendieck
Subject: Translate the elements of a dataframe
In-Reply-To: <1239908331.10629.26.camel@lynx.ibmt.intern>

Try this:

2 * (DF == "+") - (DF != "-")


On Thu, Apr 16, 2009 at 2:58 PM, Juergen Rose <rose at rz.uni-potsdam.de> wrote:
> The second beginner question. I want to create a new dataframe, where
> each element of the original dataframe is translated to 1 if it was "+",
> to 0 if it was "-" to -1 otherwise. I could do with:
>
> Lines <- "a ? ?b ? ?c ? ?d
> ? ?+ ? ?- ? ?+ ? +
> ? ?+ ? ?+ ? ?+ ? -
> ? ?+ ? ?1 ? ?- ? '+ '
> ? ?- ? ?+ ? ?+ ? +
> ? ?+ ? ?N ? ?- ? +"
>
>
> DF <- read.table(textConnection(Lines), header = TRUE)
> cnames <- colnames(DF)
> nrow <-length(rownames(DF))
>
> nc <- length(cnames)
> NDF <- data.frame(matrix(c(rep(0,nc*nrow)),ncol=nc))
>
> for (i in 1:length(cnames)) {
> ?NDF[,i] <- sapply(DF[,i],function(x) if (x=="+") {1} else {if (x=="-")
> {0} else {-1}} )
> }
> colnames(NDF) <- cnames
>
> But this is shure one loop too much. Please give me the R way solution.
>
> ______________________________________________
> 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.
>