R Combine Multiple Rows of DataFrame by creating new columns and union values2019 Community Moderator ElectionData 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 is the intuition behind short exact sequences of groups; in particular, what is the intuition behind group extensions?
What reasons are there for a Capitalist to oppose a 100% inheritance tax?
Is it canonical bit space?
What to put in ESTA if staying in US for a few days before going on to Canada
How can I prevent hyper evolved versions of regular creatures from wiping out their cousins?
Python: return float 1.0 as int 1 but float 1.5 as float 1.5
Does casting Light, or a similar spell, have any effect when the caster is swallowed by a monster?
Doing something right before you need it - expression for this?
How do I find out when a node was added to an availability group?
Has there ever been an airliner design involving reducing generator load by installing solar panels?
Why does Optional.map make this assignment work?
Why "Having chlorophyll without photosynthesis is actually very dangerous" and "like living with a bomb"?
How could indestructible materials be used in power generation?
Brothers & sisters
Cronab fails because shell path not found
I'm flying to France today and my passport expires in less than 2 months
What's the point of deactivating Num Lock on login screens?
UK: Is there precedent for the governments e-petition site changing the direction of a government decision?
Why is the ratio of two extensive quantities always intensive?
What does it mean to describe someone as a butt steak?
Increase size of symbol intercal when in superscript position
How to say in German "enjoying home comforts"
What exploit are these user agents trying to use?
Can I make "comment-region" comment empty lines?
R Combine Multiple Rows of DataFrame by creating new columns and union values
2019 Community Moderator ElectionData 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
I'mAnAccountantIKnowAlotOfMath is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
$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
I'mAnAccountantIKnowAlotOfMath is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
$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
I'mAnAccountantIKnowAlotOfMath is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
$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
I'mAnAccountantIKnowAlotOfMath is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
$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
I'mAnAccountantIKnowAlotOfMath is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
New contributor
I'mAnAccountantIKnowAlotOfMath is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
answered 5 hours ago
I'mAnAccountantIKnowAlotOfMathI'mAnAccountantIKnowAlotOfMath
1113
1113
New contributor
I'mAnAccountantIKnowAlotOfMath is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
New contributor
I'mAnAccountantIKnowAlotOfMath is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
I'mAnAccountantIKnowAlotOfMath is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
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