tidyr

Easily tidy data with spread and gather functions.

Github stars Tracking Chart

tidyr

CRAN
status
Travis build
status
R build
status
Codecov test
coverage

Overview

The goal of tidyr is to help you create tidy data. Tidy data is data
where:

  1. Every column is variable.
  2. Every row is an observation.
  3. Every cell is a single value.

Tidy data describes a standard way of storing data that is used wherever
possible throughout the tidyverse. If you
ensure that your data is tidy, you’ll spend less time fighting with the
tools and more time working on your analysis. Learn more about tidy data
in vignette("tidy-data").

Installation

# The easiest way to get tidyr is to install the whole tidyverse:
install.packages("tidyverse")

# Alternatively, install just tidyr:
install.packages("tidyr")

# Or the development version from GitHub:
# install.packages("devtools")
devtools::install_github("tidyverse/tidyr")

Cheatsheet

Getting started

library(tidyr)

tidyr functions fall into five main categories:

  • “Pivotting” which converts between long and wide forms. tidyr 1.0.0
    introduces pivot_longer() and pivot_wider(), replacing the older
    spread() and gather() functions. See vignette("pivot") for
    more details.

  • “Rectangling”, which turns deeply nested lists (as from JSON) into
    tidy tibbles. See unnest_longer(), unnest_wider(), hoist(),
    and vignette("rectangle") for more details.

  • Nesting converts grouped data to a form where each group becomes a
    single row containing a nested data frame, and unnesting does the
    opposite. See nest(), unnest(), and vignette("nest") for more
    details.

  • Splitting and combining character columns. Use separate() and
    extract() to pull a single character column into multiple columns;
    use unite() to combine multiple columns into a single character
    column.

  • Make implicit missing values explicit with complete(); make
    explicit missing values implicit with drop_na(); replace missing
    values with next/previous value with fill(), or a known value with
    replace_na().

tidyr replaces reshape2 (2010-2014) and reshape (2005-2010). Somewhat
counterintuitively, each iteration of the package has done less. tidyr
is designed specifically for tidying data, not general reshaping
(reshape2), or the general aggregation (reshape).

data.table provides high-performance
implementations of melt() and dcast()

If you’d like to read more about data reshaping from a CS perspective,
I’d recommend the following three papers:

To guide your reading, here’s a translation between the terminology used
in different places:, tidyr, gather, spread, ------------, -------, ------, reshape(2), melt, cast, spreadsheets, unpivot, pivot, databases, fold, unfold, ## Getting help

If you encounter a clear bug, please file a minimal reproducible example
on github. For questions
and other discussion, please use
community.rstudio.com.


Please note that the tidyr project is released with a Contributor Code
of Conduct
. By
contributing to this project, you agree to abide by its terms.

Main metrics

Overview
Name With Ownertidyverse/tidyr
Primary LanguageR
Program languageR (Language Count: 2)
Platform
License:Other
所有者活动
Created At2014-06-10 14:24:33
Pushed At2025-06-03 17:08:13
Last Commit At
Release Count32
Last Release Namev1.3.1 (Posted on )
First Release Namev0.1 (Posted on )
用户参与
Stargazers Count1.4k
Watchers Count70
Fork Count417
Commits Count1.4k
Has Issues Enabled
Issues Count1103
Issue Open Count52
Pull Requests Count377
Pull Requests Open Count8
Pull Requests Close Count106
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private