В тидыре, какие критерии использует функция `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 пакет обязательно должен прочитать этобумага, хотя виньетка не объясняет синтаксис.

Ответы на вопрос(1)

Ваш ответ на вопрос