Liviu Andronic
2013-Nov-25 09:24 UTC
[R] convert data frame: two variables into _one_ binary variable
Dear all, I am trying to convert the following data frame into a format more useful for me:> library("HSAUR2", lib.loc="C:/Program Files/R/R-3.0.2/library")Loading required package: tools Attaching package: ?HSAUR2? The following object is masked _by_ ?.GlobalEnv?: womensrole> head(womensrole)education gender agree disagree sexe 1 0 Male 4 2 0 2 1 Male 2 0 0 3 2 Male 4 0 0 4 3 Male 6 3 0 5 4 Male 5 5 0 6 5 Male 13 7 0 In 'womensrole', how do I convert 'agree' and 'disagree' variables into one proper binary variable, say: education gender agree sexe 1 0 Male TRUE 0 2 0 Male TRUE 0 3 0 Male TRUE 0 4 0 Male TRUE 0 5 0 Male FALSE 0 6 0 Male FALSE 0 7 1 Male TRUE 0 8 1 Male TRUE 0 9 2 Male TRUE 0 10 2 Male TRUE 0 11 2 Male TRUE 0 12 2 Male TRUE 0 [..] I'm sure there is an easy way to do this (in the form of 'melt', 'cast', etc.), but I'm not sure how to approach the problem. Regards, Liviu -- Do you know how to read? http://www.alienetworks.com/srtest.cfm http://goodies.xfce.org/projects/applications/xfce4-dict#speed-reader Do you know how to write? http://garbl.home.comcast.net/~garbl/stylemanual/e.htm#e-mail
arun
2013-Nov-25 14:45 UTC
[R] convert data frame: two variables into _one_ binary variable
Hi, One way would be: womensrole <- read.table(text="education gender agree disagree sexe 1??????? 0? Male??? 4??????? 2??? 0 2??????? 1? Male??? 2??????? 0??? 0 3??????? 2? Male??? 4??????? 0??? 0 4??????? 3? Male??? 6??????? 3??? 0 5??????? 4? Male??? 5??????? 5??? 0 6??????? 5? Male??? 13??????? 7??? 0",sep="",header=TRUE,stringsAsFactors=FALSE) library(reshape2) ?res1 <- melt(womensrole,measure.vars=c("agree","disagree"),var="agree") ?res2 <- within(res1[rep(1:nrow(res1),res1$value),], agree <- agree=="agree")[,c(1,2,4,3)] ?res2New <- res2[order(res2$education),] row.names(res2New) <- 1:nrow(res2New) A.K. On Monday, November 25, 2013 4:24 AM, Liviu Andronic <landronimirc at gmail.com> wrote: Dear all, I am trying to convert the following data frame into a format more useful for me:> library("HSAUR2", lib.loc="C:/Program Files/R/R-3.0.2/library")Loading required package: tools Attaching package: ?HSAUR2? The following object is masked _by_ ?.GlobalEnv?: ? ? womensrole> head(womensrole)? education gender agree disagree sexe 1? ? ? ? 0? Male? ? 4? ? ? ? 2? ? 0 2? ? ? ? 1? Male? ? 2? ? ? ? 0? ? 0 3? ? ? ? 2? Male? ? 4? ? ? ? 0? ? 0 4? ? ? ? 3? Male? ? 6? ? ? ? 3? ? 0 5? ? ? ? 4? Male? ? 5? ? ? ? 5? ? 0 6? ? ? ? 5? Male? ? 13? ? ? ? 7? ? 0 In 'womensrole', how do I convert 'agree' and 'disagree' variables into one proper binary variable, say: ? education gender agree sexe 1? ? ? ? 0? Male? ? TRUE? ? ? ? ? 0 2? ? ? ? 0? Male? ? TRUE? ? ? ? ? 0 3? ? ? ? 0? Male? ? TRUE? ? ? ? ? 0 4? ? ? ? 0? Male? ? TRUE? ? ? ? ? 0 5? ? ? ? 0? Male? ? FALSE? ? ? ? ? 0 6? ? ? ? 0? Male? ? FALSE? ? ? ? ? 0 7? ? ? ? 1? Male? ? TRUE? ? ? ? ? 0 8? ? ? ? 1? Male? ? TRUE? ? ? ? ? 0 9? ? ? ? 2? Male? ? TRUE? ? ? ? ? 0 10? ? ? ? 2? Male? ? TRUE? ? ? ? ? 0 11? ? ? ? 2? Male? ? TRUE? ? ? ? ? 0 12? ? ? ? 2? Male? ? TRUE? ? ? ? ? 0 [..] I'm sure there is an easy way to do this (in the form of 'melt', 'cast', etc.), but I'm not sure how to approach the problem. Regards, Liviu -- Do you know how to read? http://www.alienetworks.com/srtest.cfm http://goodies.xfce.org/projects/applications/xfce4-dict#speed-reader Do you know how to write? http://garbl.home.comcast.net/~garbl/stylemanual/e.htm#e-mail ______________________________________________ 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.
Carl Witthoft
2013-Nov-25 17:13 UTC
[R] convert data frame: two variables into _one_ binary variable
In R, as.logical() and other functions treat anything >0 as TRUE. Thus: Rgames> foo<-sample(0:5,10,rep=TRUE) Rgames> foo [1] 0 5 1 0 1 5 2 5 4 5 Rgames> as.logical(foo) [1] FALSE TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE For your case, simply (womensrole$agree>womensrole$disagree) will return the logical vector you want. Just for info, In R, as.logical() and other functions treat anything >0 as TRUE. Thus: Rgames> foo<-sample(0:5,10,rep=TRUE) Rgames> foo [1] 0 5 1 0 1 5 2 5 4 5 Rgames> as.logical(foo) [1] FALSE TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE Liviu Andronic wrote> Dear all, > I am trying to convert the following data frame into a format more > useful for me: >> library("HSAUR2", lib.loc="C:/Program Files/R/R-3.0.2/library") > Loading required package: tools > > Attaching package: ?HSAUR2? > > The following object is masked _by_ ?.GlobalEnv?: > > womensrole > >> head(womensrole) > education gender agree disagree sexe > 1 0 Male 4 2 0 > 2 1 Male 2 0 0 > 3 2 Male 4 0 0 > 4 3 Male 6 3 0 > 5 4 Male 5 5 0 > 6 5 Male 13 7 0 > > > In 'womensrole', how do I convert 'agree' and 'disagree' variables > into one proper binary variable, say: > education gender agree sexe > 1 0 Male TRUE 0 > 2 0 Male TRUE 0 > 3 0 Male TRUE 0 > 4 0 Male TRUE 0 > 5 0 Male FALSE 0 > 6 0 Male FALSE 0 > 7 1 Male TRUE 0 > 8 1 Male TRUE 0 > 9 2 Male TRUE 0 > 10 2 Male TRUE 0 > 11 2 Male TRUE 0 > 12 2 Male TRUE 0 > [..] > > I'm sure there is an easy way to do this (in the form of 'melt', > 'cast', etc.), but I'm not sure how to approach the problem. > > Regards, > Liviu > > -- > Do you know how to read? > http://www.alienetworks.com/srtest.cfm > http://goodies.xfce.org/projects/applications/xfce4-dict#speed-reader > Do you know how to write? > http://garbl.home.comcast.net/~garbl/stylemanual/e.htm#e-mail > > ______________________________________________> R-help@> 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.-- View this message in context: http://r.789695.n4.nabble.com/convert-data-frame-two-variables-into-one-binary-variable-tp4681098p4681123.html Sent from the R help mailing list archive at Nabble.com.
Thomas Stewart
2013-Nov-25 19:26 UTC
[R] convert data frame: two variables into _one_ binary variable
I do not think Carl's solution answers your question. Try this: z <- textConnection( "education gender agree disagree sexe 1 0 Male 4 2 0 2 1 Male 2 0 0 3 2 Male 4 0 0 4 3 Male 6 3 0 5 4 Male 5 5 0 6 5 Male 13 7 0" ) zz <- read.table(z,header=TRUE, stringsAsFactors=FALSE); close(z) zzz <- melt(zz,id.var=c("education","gender","sexe")) zzzz <- zzz[rep(1:nrow(zzz), zzz$value), 1:4 ] zzzz$agree <- zzzz$variable == 'agree' zzzz -tgs On Mon, Nov 25, 2013 at 4:24 AM, Liviu Andronic <landronimirc@gmail.com>wrote:> Dear all, > I am trying to convert the following data frame into a format more > useful for me: > > library("HSAUR2", lib.loc="C:/Program Files/R/R-3.0.2/library") > Loading required package: tools > > Attaching package: ‘HSAUR2’ > > The following object is masked _by_ ‘.GlobalEnv’: > > womensrole > > > head(womensrole) > education gender agree disagree sexe > 1 0 Male 4 2 0 > 2 1 Male 2 0 0 > 3 2 Male 4 0 0 > 4 3 Male 6 3 0 > 5 4 Male 5 5 0 > 6 5 Male 13 7 0 > > > In 'womensrole', how do I convert 'agree' and 'disagree' variables > into one proper binary variable, say: > education gender agree sexe > 1 0 Male TRUE 0 > 2 0 Male TRUE 0 > 3 0 Male TRUE 0 > 4 0 Male TRUE 0 > 5 0 Male FALSE 0 > 6 0 Male FALSE 0 > 7 1 Male TRUE 0 > 8 1 Male TRUE 0 > 9 2 Male TRUE 0 > 10 2 Male TRUE 0 > 11 2 Male TRUE 0 > 12 2 Male TRUE 0 > [..] > > I'm sure there is an easy way to do this (in the form of 'melt', > 'cast', etc.), but I'm not sure how to approach the problem. > > Regards, > Liviu > > -- > Do you know how to read? > http://www.alienetworks.com/srtest.cfm > http://goodies.xfce.org/projects/applications/xfce4-dict#speed-reader > Do you know how to write? > http://garbl.home.comcast.net/~garbl/stylemanual/e.htm#e-mail > > ______________________________________________ > R-help@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. >[[alternative HTML version deleted]]