I am trying to convert the following format:
mydata <- data.frame(movie = c("Titanic", "Departed"),
actor1 = c("Leo", "Jack"),
actor2 = c("Kate", "Leo")))
movie actor1 actor2
1 Titanic Leo Kate
2 Departed Jack Leo
to binary response variables:
movie Leo Kate Jack
1 Titanic 1 1 0
2 Departed 1 0 1
I tried the solution described in Convert row data to binary columns but I could get it to work for two variables, not three.
I would really appreciate if there is a clean way to do this.
Since they say variety is the spice of life, here's an approach in base R using
table
:The above output is a
matrix
of classtable
. To get adata.frame
, useas.data.frame.matrix
.How much spice is too much? Here is a solution via
tidyr
:One way to reshape your
data.frame
is with thereshape2
package, usingmelt
anddcast
. For example:Pay attention to the
fun.aggregate
andfill
parameters indcast
, which control what goes to fill in the interior after casting.The
reshape2
-package has also therecast
-function.The code:
The result: