I am trying to create a list of factors that have a binary response and have been using cast.
DF2 <- cast(data.frame(DM), id ~ region)
names(DF2)[-1] <- paste("region", names(DF2)[-1], sep = "")
The problem I am getting is that the responses are the frequency of which the answer comes up, while I'm looking for just whether or not it matches.
For example I have:
id region
1 2
1 3
2 2
3 1
3 1
What I'd like is:
id region1 region2 region3
1 0 1 1
2 0 1 0
3 1 0 0
Here's sort of a "tricky" way to do it in one line using
table
(the brackets are important). Assuming yourdata.frame
is nameddf
:table(df) > 0
gives usTRUE
andFALSE
; adding+0
converts theTRUE
andFALSE
to numbers.No specialized functions are needed:
Or for integer results:
I kind of prefer
dcast
from reshape2:There may be a smoother way to do that, but I'll be honest I don't cast stuff all that often.
Original data:
Group up the data:
Result: