gather {tidyr} | R Documentation |
Gather takes multiple columns and collapses into key-value pairs,
duplicating all other columns as needed. You use gather()
when
you notice that you have columns that are not variables.
gather(data, key, value, ..., na.rm = FALSE, convert = FALSE, factor_key = FALSE)
data |
A data frame. |
key, value |
Names of key and value columns to create in output. |
... |
Specification of columns to gather. Use bare variable names.
Select all variables between x and z with |
na.rm |
If |
convert |
If |
factor_key |
If |
gather_
for a version that uses regular evaluation
and is suitable for programming with.
library(dplyr) # From http://stackoverflow.com/questions/1181060 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) stocks %>% gather(stock, price, -time) # get first observation for each Species in iris data -- base R mini_iris <- iris[c(1, 51, 101), ] # gather Sepal.Length, Sepal.Width, Petal.Length, Petal.Width gather(mini_iris, key = flower_att, value = measurement, Sepal.Length, Sepal.Width, Petal.Length, Petal.Width) # same result but less verbose gather(mini_iris, key = flower_att, value = measurement, -Species) # repeat iris example using dplyr and the pipe operator library(dplyr) mini_iris <- iris %>% group_by(Species) %>% slice(1) mini_iris %>% gather(key = flower_att, value = measurement, -Species)