Domanda

Sto solo cominciando a andare oltre le nozioni di base di R e sono giunti a un punto in cui ho bisogno di aiuto. Voglio ristrutturare alcuni dati. Ecco ciò che un dataframe campione può apparire come:

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

Voglio i dati a guardare come:

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

Quali sono le opzioni? Come faccio a fare questo in R?

In breve, sto cercando di mantenere i valori della colonna CONT e utilizzarli come nomi delle colonne nella cornice di dati restructred. Voglio tenere un insieme variabile di colonne costante (in th esempio di cui sopra, ho tenuto ID, sesso, e Res costante).

Inoltre, è possibile controllare i valori nei dati ristrutturati? Mi può essere utile per mantenere i dati in formato binario. Mi può essere utile alcuni dati per avere il valore sia il conteggio dei tempi esiste ogni valore di contatto per ogni ID.

È stato utile?

Soluzione

Il pacchetto reshape è ciò che si desidera. Documentazione qui: http://had.co.nz/reshape/ . Non a toot il mio proprio corno, ma ho anche scritto alcune note sull'uso di reshape qui: http://www.ling.upenn.edu/~joseff/rstudy/summer2010_reshape.html

Per il vostro scopo, questo codice dovrebbe funzionare

library(reshape)
data$value <- 1
cast(data, ID + Sex + Res ~ Contact, fun = "length")

Altri suggerimenti

model.matrix funziona alla grande (questo è stato chiesto di recente, e gappy avuto questa risposta buona ):

> 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"
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top