5

私は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ごとに各連絡先の値が存在する回数の値を持つデータが必要な場合があります。

4

2 に答える 2

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")
于 2010-08-12T18:01:20.763 に答える
2

model.matrixうまく機能します(これは最近尋ねられ、gappyにはこの良い答えがありました):

> 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"
于 2010-08-12T18:08:56.533 に答える