R Combine Multiple Rows of DataFrame by creating new columns and union values The 2019 Stack Overflow Developer Survey Results Are InData scheduling for recommenderLooking for smallest set of rows that form a natural key in a data setCreating new columns by iterating over rows in pandas dataframeWhat tools are available for semi-automated matching of dirty columnar dataTechnical name for this data wrangling process? Multiple columns into multi-factor single columnReplacing values in multiple columns of a data frame in RQ-learning with a state-action-state reward structure and a Q-matrix with states as rows and actions as columnsR Programming rearranging rows and colums from timeline dataHow do I add a column to a Pandas dataframe based on other rows and columns in the dataframe?Inputting (a lot of )data into a dataframe one row at a time
What can other administrators access on my machine?
Why is it "Tumoren" and not "Tumore"?
The difference between dialogue marks
Did Section 31 appear in Star Trek: The Next Generation?
Is it true that “A.D.” is traditionally placed before the year number?
Process LaTeX code only if package is loaded
Flying Bloodthirsty Lampshades
Is there a general name for the setup in which payoffs are not known exactly but players try to influence each other's perception of the payoffs?
Is three citations per paragraph excessive for undergraduate research paper?
Why can Shazam fly?
What do the Banks children have against barley water?
Potential by Assembling Charges
Could JWST stay at L2 "forever"?
Time travel alters history but people keep saying nothing's changed
Must numeric JSON keys be quoted?
Output the Arecibo Message
Is bread bad for ducks?
Why is the maximum length of OpenWrt’s root password 8 characters?
Is an up-to-date browser secure on an out-of-date OS?
Spanish for "widget"
What does Linus Torvalds mean when he says that Git "never ever" tracks a file?
Is flight data recorder erased after every flight?
Inflated grade on resume at previous job, might former employer tell new employer?
What is the purpose of the constant in the probability density function
R Combine Multiple Rows of DataFrame by creating new columns and union values
The 2019 Stack Overflow Developer Survey Results Are InData scheduling for recommenderLooking for smallest set of rows that form a natural key in a data setCreating new columns by iterating over rows in pandas dataframeWhat tools are available for semi-automated matching of dirty columnar dataTechnical name for this data wrangling process? Multiple columns into multi-factor single columnReplacing values in multiple columns of a data frame in RQ-learning with a state-action-state reward structure and a Q-matrix with states as rows and actions as columnsR Programming rearranging rows and colums from timeline dataHow do I add a column to a Pandas dataframe based on other rows and columns in the dataframe?Inputting (a lot of )data into a dataframe one row at a time
$begingroup$
I have a dataframe in R that looks like this
ID APPROVAL_STEP APPROVAL_STATUS APPROVAL_DATE APPROVER
1234 STEP_A APPROVED 23-Jan-2019 John Smith
1234 STEP_B APPROVED 21-Jan-2019 Jane Doe
I need it to look like this
ID STEP_A_STATUS STEP_A_APPROVAL_DATE STEP_A_APPROVER STEP_B_STATUS STEP_B_APPROVAL_DATE STEP_B_APPROVER
1234 APPROVED 23-Jan-2019 John Smith APPROVED 21-Jan-2019 Jane Doe
And of course, with the original dataframe, any of APPROVAL_STATUS, APPROVAL_DATE, or APPROVER can be NA.
What is the most elegant way to do this? I know how to do it by looping through the unique IDs, grabbing each row, creating new columns, etc.; but is there any way to do this in a more elegant way (e.g., using tidyverse)?
r data-cleaning data-wrangling
$endgroup$
add a comment |
$begingroup$
I have a dataframe in R that looks like this
ID APPROVAL_STEP APPROVAL_STATUS APPROVAL_DATE APPROVER
1234 STEP_A APPROVED 23-Jan-2019 John Smith
1234 STEP_B APPROVED 21-Jan-2019 Jane Doe
I need it to look like this
ID STEP_A_STATUS STEP_A_APPROVAL_DATE STEP_A_APPROVER STEP_B_STATUS STEP_B_APPROVAL_DATE STEP_B_APPROVER
1234 APPROVED 23-Jan-2019 John Smith APPROVED 21-Jan-2019 Jane Doe
And of course, with the original dataframe, any of APPROVAL_STATUS, APPROVAL_DATE, or APPROVER can be NA.
What is the most elegant way to do this? I know how to do it by looping through the unique IDs, grabbing each row, creating new columns, etc.; but is there any way to do this in a more elegant way (e.g., using tidyverse)?
r data-cleaning data-wrangling
$endgroup$
$begingroup$
Does every ID appear exactly n times, once for each Step?
$endgroup$
– Ben Reiniger
Mar 20 at 1:45
add a comment |
$begingroup$
I have a dataframe in R that looks like this
ID APPROVAL_STEP APPROVAL_STATUS APPROVAL_DATE APPROVER
1234 STEP_A APPROVED 23-Jan-2019 John Smith
1234 STEP_B APPROVED 21-Jan-2019 Jane Doe
I need it to look like this
ID STEP_A_STATUS STEP_A_APPROVAL_DATE STEP_A_APPROVER STEP_B_STATUS STEP_B_APPROVAL_DATE STEP_B_APPROVER
1234 APPROVED 23-Jan-2019 John Smith APPROVED 21-Jan-2019 Jane Doe
And of course, with the original dataframe, any of APPROVAL_STATUS, APPROVAL_DATE, or APPROVER can be NA.
What is the most elegant way to do this? I know how to do it by looping through the unique IDs, grabbing each row, creating new columns, etc.; but is there any way to do this in a more elegant way (e.g., using tidyverse)?
r data-cleaning data-wrangling
$endgroup$
I have a dataframe in R that looks like this
ID APPROVAL_STEP APPROVAL_STATUS APPROVAL_DATE APPROVER
1234 STEP_A APPROVED 23-Jan-2019 John Smith
1234 STEP_B APPROVED 21-Jan-2019 Jane Doe
I need it to look like this
ID STEP_A_STATUS STEP_A_APPROVAL_DATE STEP_A_APPROVER STEP_B_STATUS STEP_B_APPROVAL_DATE STEP_B_APPROVER
1234 APPROVED 23-Jan-2019 John Smith APPROVED 21-Jan-2019 Jane Doe
And of course, with the original dataframe, any of APPROVAL_STATUS, APPROVAL_DATE, or APPROVER can be NA.
What is the most elegant way to do this? I know how to do it by looping through the unique IDs, grabbing each row, creating new columns, etc.; but is there any way to do this in a more elegant way (e.g., using tidyverse)?
r data-cleaning data-wrangling
r data-cleaning data-wrangling
asked Mar 12 at 17:36
user69420
$begingroup$
Does every ID appear exactly n times, once for each Step?
$endgroup$
– Ben Reiniger
Mar 20 at 1:45
add a comment |
$begingroup$
Does every ID appear exactly n times, once for each Step?
$endgroup$
– Ben Reiniger
Mar 20 at 1:45
$begingroup$
Does every ID appear exactly n times, once for each Step?
$endgroup$
– Ben Reiniger
Mar 20 at 1:45
$begingroup$
Does every ID appear exactly n times, once for each Step?
$endgroup$
– Ben Reiniger
Mar 20 at 1:45
add a comment |
1 Answer
1
active
oldest
votes
$begingroup$
What you are asking is how to convert data from "long" form to "wide" form.
You can just use the reshape()
function which is in the stats
package.
#' I constructed your data frame here
x<-data.frame(ID=c(1234,1234),
APPROVAL_STEP=c("STEP_A","STEP_B"),
APPROVAL_STATUS=c("APPROVED","APPROVED"),
APPROVAL_DATE=c("23-Jan-2019","21-Jan-2019"),
APPROVER=c("John Smith","Jane Doe"))
#' Now to reshape the data
library(stats)
reshape(x,
timevar="APPROVAL_STEP",
idvar="ID",
sep="_", direction = "wide")
Your output should look like.
ID APPROVAL_STATUS_STEP_A APPROVAL_DATE_STEP_A APPROVER_STEP_A APPROVAL_STATUS_STEP_B APPROVAL_DATE_STEP_B
1 1234 APPROVED 23-Jan-2019 John Smith APPROVED 21-Jan-2019
APPROVER_STEP_B
1 Jane Doe
The column names is a cosmetic issue, but that's the gist of it.
Hope this is helpful!
New contributor
$endgroup$
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
return StackExchange.using("mathjaxEditing", function ()
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
);
);
, "mathjax-editing");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "557"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdatascience.stackexchange.com%2fquestions%2f47175%2fr-combine-multiple-rows-of-dataframe-by-creating-new-columns-and-union-values%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
What you are asking is how to convert data from "long" form to "wide" form.
You can just use the reshape()
function which is in the stats
package.
#' I constructed your data frame here
x<-data.frame(ID=c(1234,1234),
APPROVAL_STEP=c("STEP_A","STEP_B"),
APPROVAL_STATUS=c("APPROVED","APPROVED"),
APPROVAL_DATE=c("23-Jan-2019","21-Jan-2019"),
APPROVER=c("John Smith","Jane Doe"))
#' Now to reshape the data
library(stats)
reshape(x,
timevar="APPROVAL_STEP",
idvar="ID",
sep="_", direction = "wide")
Your output should look like.
ID APPROVAL_STATUS_STEP_A APPROVAL_DATE_STEP_A APPROVER_STEP_A APPROVAL_STATUS_STEP_B APPROVAL_DATE_STEP_B
1 1234 APPROVED 23-Jan-2019 John Smith APPROVED 21-Jan-2019
APPROVER_STEP_B
1 Jane Doe
The column names is a cosmetic issue, but that's the gist of it.
Hope this is helpful!
New contributor
$endgroup$
add a comment |
$begingroup$
What you are asking is how to convert data from "long" form to "wide" form.
You can just use the reshape()
function which is in the stats
package.
#' I constructed your data frame here
x<-data.frame(ID=c(1234,1234),
APPROVAL_STEP=c("STEP_A","STEP_B"),
APPROVAL_STATUS=c("APPROVED","APPROVED"),
APPROVAL_DATE=c("23-Jan-2019","21-Jan-2019"),
APPROVER=c("John Smith","Jane Doe"))
#' Now to reshape the data
library(stats)
reshape(x,
timevar="APPROVAL_STEP",
idvar="ID",
sep="_", direction = "wide")
Your output should look like.
ID APPROVAL_STATUS_STEP_A APPROVAL_DATE_STEP_A APPROVER_STEP_A APPROVAL_STATUS_STEP_B APPROVAL_DATE_STEP_B
1 1234 APPROVED 23-Jan-2019 John Smith APPROVED 21-Jan-2019
APPROVER_STEP_B
1 Jane Doe
The column names is a cosmetic issue, but that's the gist of it.
Hope this is helpful!
New contributor
$endgroup$
add a comment |
$begingroup$
What you are asking is how to convert data from "long" form to "wide" form.
You can just use the reshape()
function which is in the stats
package.
#' I constructed your data frame here
x<-data.frame(ID=c(1234,1234),
APPROVAL_STEP=c("STEP_A","STEP_B"),
APPROVAL_STATUS=c("APPROVED","APPROVED"),
APPROVAL_DATE=c("23-Jan-2019","21-Jan-2019"),
APPROVER=c("John Smith","Jane Doe"))
#' Now to reshape the data
library(stats)
reshape(x,
timevar="APPROVAL_STEP",
idvar="ID",
sep="_", direction = "wide")
Your output should look like.
ID APPROVAL_STATUS_STEP_A APPROVAL_DATE_STEP_A APPROVER_STEP_A APPROVAL_STATUS_STEP_B APPROVAL_DATE_STEP_B
1 1234 APPROVED 23-Jan-2019 John Smith APPROVED 21-Jan-2019
APPROVER_STEP_B
1 Jane Doe
The column names is a cosmetic issue, but that's the gist of it.
Hope this is helpful!
New contributor
$endgroup$
What you are asking is how to convert data from "long" form to "wide" form.
You can just use the reshape()
function which is in the stats
package.
#' I constructed your data frame here
x<-data.frame(ID=c(1234,1234),
APPROVAL_STEP=c("STEP_A","STEP_B"),
APPROVAL_STATUS=c("APPROVED","APPROVED"),
APPROVAL_DATE=c("23-Jan-2019","21-Jan-2019"),
APPROVER=c("John Smith","Jane Doe"))
#' Now to reshape the data
library(stats)
reshape(x,
timevar="APPROVAL_STEP",
idvar="ID",
sep="_", direction = "wide")
Your output should look like.
ID APPROVAL_STATUS_STEP_A APPROVAL_DATE_STEP_A APPROVER_STEP_A APPROVAL_STATUS_STEP_B APPROVAL_DATE_STEP_B
1 1234 APPROVED 23-Jan-2019 John Smith APPROVED 21-Jan-2019
APPROVER_STEP_B
1 Jane Doe
The column names is a cosmetic issue, but that's the gist of it.
Hope this is helpful!
New contributor
New contributor
answered Apr 4 at 16:12
I'mAnAccountantIKnowAlotOfMathI'mAnAccountantIKnowAlotOfMath
1213
1213
New contributor
New contributor
add a comment |
add a comment |
Thanks for contributing an answer to Data Science Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdatascience.stackexchange.com%2fquestions%2f47175%2fr-combine-multiple-rows-of-dataframe-by-creating-new-columns-and-union-values%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
$begingroup$
Does every ID appear exactly n times, once for each Step?
$endgroup$
– Ben Reiniger
Mar 20 at 1:45