Sto provando a prendere le colonne che sono nel formato lungo e le spargo al formato largo come indicato sotto. Mi piacerebbe usare tidyr per risolvere questo problema con gli strumenti di manipolazione dei dati in cui sto investendo, ma per rendere questa risposta più generale, si prega di fornire altre soluzioni.Come posso diffondere misure ripetute di più variabili nel formato grande?
Ecco quello che ho:
library(dplyr); library(tidyr)
set.seed(10)
dat <- data_frame(
Person = rep(c("greg", "sally", "sue"), each=2),
Time = rep(c("Pre", "Post"), 3),
Score1 = round(rnorm(6, mean = 80, sd=4), 0),
Score2 = round(jitter(Score1, 15), 0),
Score3 = 5 + (Score1 + Score2)/2
)
## Person Time Score1 Score2 Score3
## 1 greg Pre 80 78 84.0
## 2 greg Post 79 80 84.5
## 3 sally Pre 75 74 79.5
## 4 sally Post 78 78 83.0
## 5 sue Pre 81 78 84.5
## 6 sue Post 82 81 86.5
desiderata di grande formato:
Person Pre.Score1 Pre.Score2 Pre.Score3 Post.Score1 Post.Score2 Post.Score3
1 greg 80 78 84.0 79 80 84.5
2 sally 75 74 79.5 78 78 83.0
3 sue 81 78 84.5 82 81 86.5
posso farlo facendo qualcosa di simile per ogni punteggio:
spread(dat %>% select(Person, Time, Score1), Time, Score1) %>%
rename(Score1_Pre = Pre, Score1_Post = Post)
E quindi utilizzando _join
ma sembra prolisso e come deve esserci un modo migliore.
domande correlate:
tidyr wide to long with two repeated measures
Is it possible to use spread on multiple columns in tidyr similar to dcast?
Questo è più facile con la versione devel di 'data.table' es. 'dcast (setDT (dat), Person ~ Time, value.var = c ('Score1', 'Score2', 'Score3'))' – akrun
@TylerRinker, penso che si riferisca alla seconda colonna del tuo risultato – BrodieG