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]]