- Solution
- tidyr
- reshape2
Gather 'round the table or the living room floor and homeschool all of your children, at all of their grade levels, all of their subjects. Epic games fm21. Gather Round Homeschool is a homeschool curriculum designed to help you homeschool as a family, not try to recreate a segregated classroom. R/gathertown: Better spaces to gather around: Proximity video chat in fully customizable, 2D interactive spaces. Fluid video chat: walk in and out.
Problem
R using dplyr 'gather' function. Ask Question Asked 3 years, 4 months ago. Track my ip. Active 3 years, 4 months ago. Viewed 9k times 4. I have a dataframe that looks like the. How to use gather programmatically inside an R function? You should use the function gather which takes character vectors, containing column names, instead of unquoted column names The simplified syntax is as follow: gather(data, keycol, valuecol, gathercols).
You want to do convert data from a wide format to a long format.
Many functions in R expect data to be in a long format rather than a wide format. Programs like SPSS, however, often use wide-formatted data.
Solution
There are two sets of methods that are explained below:
gather()
andspread()
from the tidyr package. This is a newer interface to the reshape2 package.melt()
anddcast()
from the reshape2 package.
There are a number of other methods which aren't covered here, since they are not as easy to use:
- The
reshape()
function, which is confusingly not part of the reshape2 package; it is part of the base install of R. stack()
andunstack()
Sample data
These data frames hold the same data, but in wide and long formats. They will each be converted to the other format below.
tidyr
From wide to long
Gather Round Easter
Use gather
:
Tidyr Gather
In this example, the source columns that are gathered are specified with control:cond2
. This means to use all the columns, positionally, between control
and cond2
. Another way of doing it is to name the columns individually, as in: Remote pc access windows 7.
If you need to use gather()
programmatically, you may need to use variables containing column names. To do this, you should use the gather_()
function instead, which takes strings instead of bare (unquoted) column names.
Optional: Rename the factor levels of the variable column, and sort.
From long to wide
Use spread
:
Optional: A few things to make the data look nicer.
The order of factor levels determines the order of the columns. The level order can be changed before reshaping, or the columns can be re-ordered afterward.
reshape2
From wide to long
Use melt
:
There are options for melt
that can make the output a little easier to work with:
If you leave out the measure.vars
, melt
will automatically use all the other variables as the id.vars
. The reverse is true if you leave out id.vars
.
If you don't specify variable.name
, it will name that column 'variable'
, and if you leave out value.name
, it will name that column 'measurement'
.
Optional: Rename the factor levels of the variable column.
From long to wide
Gather Round Curriculum
The following code uses dcast
to reshape the data. This function is meant for data frames; if you are working with arrays or matrices, use acast
instead.
Optional: A few things to make the data look nicer.
Gather Round Homeschool
The order of factor levels determines the order of the columns. The level order can be changed before reshaping, or the columns can be re-ordered afterward.