2016-07-21 19 views
0

Ich habe folgendes Format der Daten:vorbereiten Daten für zwei ANOVA in R

m1 m2 m3 names 
1 24.5 28.4 26.1  1 
2 23.5 34.2 28.3  2 
3 26.4 29.5 24.3  3 
4 27.1 32.2 26.2  4 
5 29.9 20.1 27.8  5 

Wie kann ich diese Daten in das Format vorbereiten, die ich aov in R ernähren können?

I.e.

values ind name 
1 24.5 m1 1 
2 23.5 m1 2 
3 26.4 m1 3 
... 

Zum einen Weg anova habe ich nur stack Befehl. Wie kann ich es für Zwei-Wege-Anova tun, ohne eine Schleife?

+2

siehe '? Umformen()' – bouncyball

Antwort

1

Versuchen Sie, diese

library(reshape2) 
melt(df) 
1

user2100721 ​​eine Antwort mit einem Paket gegeben hat. Ohne Paket-Importe kann dies als

a <- read.table(header=TRUE, text="m1 m2 m3 names 
            24.5 28.4 26.1  1 
            23.5 34.2 28.3  2 
            26.4 29.5 24.3  3 
            27.1 32.2 26.2  4 
            29.9 20.1 27.8  5") 

reshape(a, direction="long", varying=list(c("m1","m2","m3"))) 
2

Eine Alternative zu allen oben genannten Antworten gelöst werden, die schön sind, können Sie sammeln verwenden von tidyr Paket. Gather nimmt mehrere Spalten und bricht sie in Schlüssel/Wert-Paare zusammen. Sie müssen zwei Variablen zu übergeben, ist einer der Schlüssel ist und der andere ist Wert

X<- structure(list(m1 = c(24.5, 23.5, 26.4, 27.1, 29.9), m2 = c(28.4, 
    34.2, 29.5, 32.2, 20.1), m3 = c(26.1, 28.3, 24.3, 26.2, 27.8), 
     names = 1:5), .Names = c("m1", "m2", "m3", "names"), class = "data.frame", row.names = c(NA, 
    -5L)) 


library(tidyr) 
dat <- X %>% gather(variable, value) 

> head(dat,10) 
# variable value 
#1  m1 24.5 
#2  m1 23.5 
#3  m1 26.4 
#4  m1 27.1 
#5  m1 29.9 
#6  m2 28.4 
#7  m2 34.2 
#8  m2 29.5 
#9  m2 32.2 
#10  m2 20.1 
Verwandte Themen