Próbuję obliczyć argumenty dla gather
w pakiecie tidyr
.W tidyr, jakie kryteria używa funkcja `gather` do mapowania ramek danych z szerokiego na długi?
spojrzałem na dokumentacji, a składnia wygląda następująco:
gather(data, key, value, ..., na.rm = FALSE, convert = FALSE)
Jest example w plikach pomocy:
stocks <- data.frame(
time = as.Date('2009-01-01') + 0:9,
X = rnorm(10, 0, 1),
Y = rnorm(10, 0, 2),
Z = rnorm(10, 0, 4)
)
gather(stocks, stock, price, -time)
Jestem ciekaw ostatnim wierszu:
Tutaj, stocks
to oczywiście dane, które chcemy zmodyfikować, co jest w porządku.
Dzięki temu mogę przeczytać, że stock
i price
są argumentami pary klucz-wartość - ale w jaki sposób ta funkcja decyduje o wyborze kolumn do utworzenia tej pary wartości klucza? Oryginalny dataframe wygląda następująco:
time X Y Z
2009-01-01 1.10177950 -1.1926213 -7.4149618
2009-01-02 0.75578151 -4.3705737 -0.3117843
2009-01-03 -0.23823356 -1.3497319 3.8742654
2009-01-04 0.98744470 -4.2381224 0.7397038
2009-01-05 0.74139013 -2.5303960 -5.5197743
nie widzę żadnych oznak, że powinniśmy użyć dowolnej kombinacji X
, Y
lub Z
. Kiedy używam tej funkcji, mam wrażenie, że właśnie wybieram nazwy dla tego, co chcę, aby kolumny w mojej długiej formatowanej ramce danych były i modląc się, że magicznie działa gather
. Pomyśl o tym, czuję to samo, kiedy używam melt
.
Czy gather
wygląda na typ kolumny? Jak zmienia się mapa z długiej na długą?
EDIT Świetna odpowiedź poniżej, wielka dyskusja poniżej, i dla nikogo innego chce się więcej informacji na temat filozofii i korzystania z pakietu tidyr
zdecydowanie powinni przeczytać tę paper, chociaż winieta nie wyjaśnia składnię.
"Czas" mówi o użyciu wszystkich kolumn z wyjątkiem czasu. Innym podejściem byłoby użycie 'gather (akcje, magazyn, wartość, X: Z)', jeśli wolisz określić, które kolumny powinny być "zebrane". Albo nawet: 'gather (akcje, zapasy, wartość, X, Y, Z)'. Zasadniczo jest to bardziej jak użycie 'melt' z argumentem' measure.vars' zamiast określania 'id.vars' (' stop (akcje, measure.vars = c ("X", "Y", "Z")) '). – A5C1D2H2I1M1N2O1R2T1