Ich möchte zwei separate Gruppen von Spalten in zwei Schlüssel-Wert-Paare sammeln. Hier einige Beispieldaten:Mit Gather(), um zwei (oder mehr) Gruppen von Spalten in zwei (oder mehr) Schlüssel-Wert-Paare zu sammeln
library(dplyr)
library(tidyr)
ID = c(1:5)
measure1 = c(1:5)
measure2 = c(6:10)
letter1 = c("a", "b", "c", "d", "e")
letter2 = c("f", "g", "h", "i", "j")
df = data.frame(ID, measure1, measure2, letter1, letter2)
df = tbl_df(df)
df$letter1 <- as.character(df$letter1)
df$letter2 <- as.character(df$letter2)
Ich möchte die Werte der zwei Messsäulen (measure1 und measure2) mit einem Schlüssel-Spalte in einer Spalte sein neben ihm (der Schlüssel-Wert-Paar). Ich möchte auch das gleiche für letter1 und letter2. Ich dachte, dass ich wählen verwenden könnte() zwei verschiedene Datensätze zu erstellen, verwenden Sie sammeln separat auf beiden Datensätze und dann kommen (dies funktioniert):
df_measure = df %>%
select(ID, measure1, measure2) %>%
gather(measure_time, measure, -ID) %>%
mutate(id.extra = c(1:10))
df_letter = df %>%
select(ID, letter1, letter2) %>%
gather(letter_time, letter, -ID) %>%
mutate(id.extra = c(1:10))
df_long = df_measure %>%
left_join(df_letter, by = "id.extra")
Also das funktioniert perfekt (in diesem Fall), aber ich denke, das könnte eleganter gemacht werden (ohne Zeug wie das Teilen oder Erstellen von "id.extra"). Also bitte etwas Licht darauf!
die gather mehr nehmen kann() Funktion kann das nicht tun? –
@BenjaminTelkamp, Kann was nicht tun? Ich habe bei meinem ersten Ansatz die Funktion "Sammeln" verwendet. Aber, Sie müssen * alle * Spalten sammeln und sie dann ausbreiten. – A5C1D2H2I1M1N2O1R2T1