Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
748 views
in Technique[技术] by (71.8m points)

dataframe - 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
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...