[R] convert data frame: two variables into _one_ binary variable
David Carlson
dcarlson at tamu.edu
Mon Nov 25 18:59:55 CET 2013
I think the OP was looking to expand the data frame so that each row was a single observation so that the first row becomes 6 rows, 4-TRUE and 2-FALSE. Something like this
> womensrole <- HSAUR::womensrole
> step1 <- reshape(womensrole, varying=c("agree", "disagree"),
+ v.names="Freq", timevar="Agree", times=c(TRUE, FALSE),
+ direction="long")
> step1 <- step1[order(step1$id),]
> rownames(step1) <- NULL # Simplify the row names
> step2 <- step1[rep(rownames(step1), step1$Freq), c(5, 1:3)]
> rownames(step2) <- NULL # Simplify the row names
> head(step2, 12)
id education sex Agree
1 1 0 Male TRUE
2 1 0 Male TRUE
3 1 0 Male TRUE
4 1 0 Male TRUE
5 1 0 Male FALSE
6 1 0 Male FALSE
7 2 1 Male TRUE
8 2 1 Male TRUE
9 3 2 Male TRUE
10 3 2 Male TRUE
11 3 2 Male TRUE
12 3 2 Male TRUE
-------------------------------------
David L Carlson
Department of Anthropology
Texas A&M University
College Station, TX 77840-4352
-----Original Message-----
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf Of Carl Witthoft
Sent: Monday, November 25, 2013 11:14 AM
To: r-help at r-project.org
Subject: Re: [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.
______________________________________________
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.
More information about the R-help
mailing list