В тидыре, какие критерии использует функция `collect` для отображения кадра данных с широкого на длинный?
Я пытаюсь выяснить аргументы дляgather
вtidyr
пакет.
Я посмотрел на документацию, и синтаксис выглядит так:
gather(data, key, value, ..., na.rm = FALSE, convert = FALSE)
Естьпример в файлах справки:
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)
Меня интересует последняя строка:gather(stocks, stock, price, -time)
Вот,stocks
это данные, которые мы хотим изменить, и это нормально.
Так что я могу прочитать этоstock
а такжеprice
являются аргументами для пары ключ-значение - но как эта функция решает, как выбрать столбцы для создания этой пары ключ-значение? Исходный кадр данных выглядит следующим образом:
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
Я не вижу никаких признаков того, что мы должны использовать какую-либо комбинациюX
, Y
или жеZ
, Когда я использую эту функцию, мне кажется, что я просто выбираю имена для того, что я хочу, чтобы столбцы в моем долго отформатированном кадре данных, и молился, чтобыgather
волшебно работает. Если подумать, я чувствую то же самое, когда я используюmelt
.
Есть лиgather
посмотрите на тип колонки? Как оно отображается от широкого до длинного?
РЕДАКТИРОВАТЬ Отличный ответ ниже, отличное обсуждение ниже, и для всех, кто хочет получить больше информации о философии и использованииtidyr
пакет обязательно должен прочитать этобумага, хотя виньетка не объясняет синтаксис.