Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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
like image 450
user1489719 Avatar asked Dec 01 '22 21:12

user1489719


1 Answers

I kind of prefer dcast from reshape2:

library(reshape2)
dat <- read.table(text = "id region
 1   2
 1   3
 2   2
 3   1
 3   1",header = TRUE,sep = "")

dcast(dat,id~region,fun.aggregate = function(x){as.integer(length(x) > 0)})

  id 1 2 3
1  1 0 1 1
2  2 0 1 0
3  3 1 0 0

There may be a smoother way to do that, but I'll be honest I don't cast stuff all that often.

like image 159
joran Avatar answered Dec 19 '22 06:12

joran