我刚刚开始超越R中的基础知识,并且已经到了需要一些帮助的地步。我想重组一些数据。以下是示例数据框的样子:
ID Sex Res Contact
1 M MA ABR
1 M MA CON
1 M MA WWF
2 F FL WIT
2 F FL CON
3 X GA XYZ
我希望数据看起来像:
ID SEX Res ABR CON WWF WIT XYZ
1 M MA 1 1 1 0 0
2 F FL 0 1 0 1 0
3 X GA 0 0 0 0 1
我有什么选择?我怎么会在R?
简而言之,我希望保留CONT列的值,并将它们用作重构数据框中的列名。我想保持一组变量列不变(在上面的示例中,我持有ID,Sex和Res常量)。
此外,是否可以控制重组数据中的值?我可能想将数据保持为二进制。我可能希望某些数据的值为每个ID存在的每个联系值的计数。
答案 0 :(得分:12)
reshape
包就是你想要的。这里的文档:http://had.co.nz/reshape/。不要自言自语,但我也在reshape
处使用了http://www.ling.upenn.edu/~joseff/rstudy/summer2010_reshape.html
出于您的目的,此代码应该可以使用
library(reshape)
data$value <- 1
cast(data, ID + Sex + Res ~ Contact, fun = "length")
答案 1 :(得分:2)
model.matrix
效果很好(最近有人问过,gappy had this good answer):
> model.matrix(~ factor(d$Contact) -1)
factor(d$Contact)ABR factor(d$Contact)CON factor(d$Contact)WIT factor(d$Contact)WWF factor(d$Contact)XYZ
1 1 0 0 0 0
2 0 1 0 0 0
3 0 0 0 1 0
4 0 0 1 0 0
5 0 1 0 0 0
6 0 0 0 0 1
attr(,"assign")
[1] 1 1 1 1 1
attr(,"contrasts")
attr(,"contrasts")$`factor(d$Contact)`
[1] "contr.treatment"