[R] convert data frame: two variables into _one_ binary variable

Liviu Andronic landronimirc at gmail.com
Tue Nov 26 12:41:36 CET 2013


Dear all,
Thank you so much for all the replies.

The following worked exactly as needed:
> library("HSAUR2", lib.loc="/home/liv/R/i686-pc-linux-gnu-library/3.0")
> library("reshape2", lib.loc="/usr/local/lib/R/site-library")
> data(womensrole)
> zzz <- melt(womensrole,id.var=c("education","gender"))
> zzzz <- zzz[rep(1:nrow(zzz), zzz$value), 1:4 ]
> zzzz$agree <- zzzz$variable == 'agree'
> zzzz[ zzzz$education %in% 0:1, ]
education gender variable value agree
1 0 Male agree 4 TRUE
1.1 0 Male agree 4 TRUE
1.2 0 Male agree 4 TRUE
1.3 0 Male agree 4 TRUE
2 1 Male agree 2 TRUE
2.1 1 Male agree 2 TRUE
22 0 Female agree 4 TRUE
22.1 0 Female agree 4 TRUE
22.2 0 Female agree 4 TRUE
22.3 0 Female agree 4 TRUE
23 1 Female agree 1 TRUE
43 0 Male disagree 2 FALSE
43.1 0 Male disagree 2 FALSE
64 0 Female disagree 2 FALSE
64.1 0 Female disagree 2 FALSE

Regards,
Liviu


On Mon, Nov 25, 2013 at 8:26 PM, Thomas Stewart
<tgs.public.mail at gmail.com> wrote:
> 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 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.
>
>



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



More information about the R-help mailing list