gather()
when
you notice that you have columns that are not variables.gather(data, key, value, ..., na.rm = FALSE, convert = FALSE,
factor_key = FALSE)
x:z
, exclude y with
-y
. For more options, see the select documentation.TRUE
, will remove rows from output where the
value column in NA
.TRUE
will automatically run
type.convert
on the key column. This is useful if the column
names are actually numeric, integer, or logical.FALSE
, the default, the key values will be
stored as a character vector. If TRUE
, will be stored as a factor,
which preserves the original ordering of the columns.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)
Run the code above in your browser using DataLab