Angenommen, ich habe folgende Daten, die die Mischung aus 2 Bestandteilen aus der Menge der Zutaten zu bewegen A, B, C
:tidyr Ausbreitung Verwendung von lang auf breit
(dat <- structure(list(var1 = c("A", "A", "A", "A", "A", "B", "B", "B", "C"),
var2 = c("-", "B", "B", "C", "C", "-", "C", "C", "-"),
val1 = c(100, 25, 50, 25, 50, 100, 25, 50, 100),
val2 = c(0, 75, 50, 75, 50, 0, 75, 50, 0)),
.Names = c("var1", "var2", "val1", "val2"),
row.names = c(NA, -9L), class = "data.frame"))
# var1 var2 val1 val2
# 1 A - 100 0
# 2 A B 25 75
# 3 A B 50 50
# 4 A C 25 75
# 5 A C 50 50
# 6 B - 100 0
# 7 B C 25 75
# 8 B C 50 50
# 9 C - 100 0
ich jetzt möchte diese Daten zu transformieren: Ich würde gern haben Spalten mit der Bezeichnung A, B, C
den Inhalt der einzelnen Inhaltsstoffe geben:
# A B C
# 1 100 0 0
# 2 25 75 0
# 3 50 50 0
# 4 25 0 75
# 5 75 0 25
# 6 0 100 0
# 7 0 25 75
# 8 0 50 25
# 9 0 0 100
Wie würde ich lösen, dass tidyr
mit? Beliebige Kombination von spread
& unite
?
Bitte geben Sie an, was Sie bisher versucht haben und doesn Es scheint nicht zu funktionieren. –
Nun, es ist eine konzeptionelle Frage. Ich versuchte 'spread (var1, val1, drop = FALSE)' was irgendwie in die richtige Richtung ging (bekam die Spalten, die ich wollte), aber ich sehe nicht, ob ich überhaupt auf dem richtigen Weg bin. Ich würde konzeptionell dasselbe mit '(var2, val2) tun müssen und dann die Ergebnisse irgendwie kombinieren. Aber ist das überhaupt richtig? – thothal
Bitte verwenden Sie nicht den Kommentarbereich, um den Code zu teilen. Bearbeiten Sie Ihre ursprüngliche Frage. –