Sie die Basis reshape()
Funktion (grob) können gleichzeitig schmelzen über Mehrere Sätze von Variablen, unter Verwendung des varying
Parameters und Einstellung direction
bis "long"
.
Zum Beispiel hier, Sie liefern eine Liste von drei "Sätze" (Vektoren) von Variablennamen in die varying
Argument:
dat <- read.table(text="
cid dyad f1 f2 op1 op2 ed1 ed2 junk
1 2 0 0 2 4 5 7 0.876
1 5 0 1 2 4 4 3 0.765
", header=TRUE)
reshape(dat, direction="long",
varying=list(c("f1","f2"), c("op1","op2"), c("ed1","ed2")),
v.names=c("f","op","ed"))
Sie mit diesem Ende folgendes haben:
cid dyad junk time f op ed id
1.1 1 2 0.876 1 0 2 5 1
2.1 1 5 0.765 1 0 2 4 2
1.2 1 2 0.876 2 0 4 7 1
2.2 1 5 0.765 2 1 4 3 2
Beachten Sie, dass zwei Variablen erstellt werden, zusätzlich zu den drei zusammengeklappten Mengen: eine $id
Variable - die die Zeilennummer in der ursprünglichen Tabelle verfolgt (dat
), und eine $time
Variable - die th entspricht Die Reihenfolge der ursprünglichen Variablen, die zusammengebrochen wurden. Es gibt jetzt auch verschachtelte Zeilennummern - 1.1, 2.1, 1.2, 2.2
, die hier nur die Werte von $id
und $time
in dieser Zeile sind.
Ohne genau zu wissen, was Sie versuchen zu verfolgen, schwer zu sagen, ob $id
oder $time
ist, was Sie als Zeilenbezeichner verwenden möchten, aber sie sind beide da.
könnte auch nützlich sein, mit den Parametern zu spielen timevar
und idvar
(Sie timevar
zu NULL
zum Beispiel festlegen können).
reshape(dat, direction="long",
varying=list(c("f1","f2"), c("op1","op2"), c("ed1","ed2")),
v.names=c("f","op","ed"),
timevar="id1", idvar="id2")
wäre ein Hinweis 'melt' sein von' data.table' – akrun
ich _think_ dies hier die kanonische Antwort sein: [mehrere Sätze von Messsäulen (Wide-Format) in einzelne Spalten (Langformat) umformen] (https://stackoverflow.com/questions/12466493/reshaping-multiple-sets-of-measurement-columns-wide-format-into-single-columns) – Henrik
@akrun hwo verwenden Sie die Funktion melt() in diesem Fall? –