ich einen Datenrahmen wie diese:umformen breit zu lange mit Kontrollvektor
df <- data.frame(v11=rnorm(1), v12=rnorm(1), v21=rnorm(1), v31=rnorm(1), v41=rnorm(1), v42=rnorm(1), v43=rnorm(1))
dieser Datenrahmen hat nur eine Zeile
df
# v11 v12 v21 v31 v41 v42 v43
# 1 -0.4425873 0.6062714 -0.3816921 0.2477926 0.1292103 0.2801346 0.4290997
Einige Spalten Beobachtungen für das gleiche Thema wiederholt werden, für Beispiel v11
und v12
sind zwei Beobachtungen aus dem gleichen Thema. v21
und v32
sind nur einzelne Beobachtungen. v4x
hat drei Beobachtungen.
Ich möchte den Datenrahmen neu zu gestalten wie folgt aussehen:
v11 v21 v31 v41
v12 NA NA v42
NA NA NA v43
Beachten Sie, dass sie die Werte der Variablen nicht ihre Namen enthalten sollte.
Ich habe einen Indikator Vektor, der Marken, die Beobachtung ist, was:
v <- c(1, 2, 1, 1, 1, 2, 3)
Jede „1“ den Beginn einer neuen Spalte markiert.
Meine erste Idee war jede Zeile auf seine eigene bauen:
row1 <- df[, v == 1]
row2 <- df[, v == 2]
row3 <- df[, v == 3]
aber enthält nicht die nationalen Agenturen. Es muss einen einfacheren Weg geben.
Hinweis: Eine Lösung sollte nicht v11
auf den ursprünglichen Spaltennamen abhängen müssen, v41
, etc, aber nur auf dem Vektor v
.
Es ist nichts unklar über diese Frage. – Alex