How to use cast or another function to create a binary table in R

casting, dataframe, r, reshape

Solution

Original data:

x <- data.frame(id=c(1,1,2,3,3), region=factor(c(2,3,2,1,1)))

> x
  id region
1  1      2
2  1      3
3  2      2
4  3      1
5  3      1

Group up the data:

aggregate(model.matrix(~ region - 1, data=x), x["id"], max)

Result:

  id region1 region2 region3
1  1       0       1       1
2  2       0       1       0
3  3       1       0       0

Problem

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

Original source