Ash S
Ash S

Reputation: 119

R- How to reshape Long to Wide with multiple variables/columns

I started off with the following subset of my data

UserID labelnospaces             responses
1      Were you given any info?  yes
1      By using this service..?  yes
1      How satisfied are you?    Very satisfied
2      Were you given any info?  no
2      By using this service..?  no
2      How satisfied are you?    unsatisfied

By using the code below, I was able to get from long to wide perfectly

service_L_to_W<- reshape(data=service, idvar="UserID",
                         timevar = "labelnospaces",  
                         direction = "wide")

Using the code above, I got (this is what I wanted)

UserID   Were you given any info?   By using this service..?   How satisfied are you?
1        yes                        yes                        very satisfied
2        no                         no                         unsatisfied

My question is how do I edit my code so that I can convert my data (with the extra variables/columns) from long to wide:

UserID Full Name  DOB     EncounterID QuestionID Name  Type  labelnospaces           responses    
1      John Smith 1-1-90  13          505        Intro Check Were you given any info?  yes
1      John Smith 1-1-90  13          506        Care  Check By using this service..   yes
1      John Smith 1-1-90  13          507        Out   Check How satisfied are you?    vsat
2      Jane Doe   2-2-80  14          505        Intro Check Were you given any info?  no
2      Jane Doe   2-2-80  14          506        Care  Check By using this service..   no
2      Jane Doe   2-2-80  14          507        Out   Check How satisfied are you?    unsat

Upvotes: 2

Views: 293

Answers (1)

Kra.P
Kra.P

Reputation: 15123

Some variables are can be better to together

df %>%
  pivot_wider(id_cols = c(UserID, Full.Name, DOB, EncounterID), names_from = c(QuestionID, QName, labelnospaces), values_from = responses)

  UserID Full.Name  DOB    EncounterID `505_Intro_Were you given any info?` `506_Care_By using this service..`
   <int> <chr>      <chr>        <int> <chr>                                <chr>                             
1      1 John Smith 1-1-90          13 yes                                  yes                               
2      2 Jane Doe   2-2-80          14 no                                   no                                
  `507_Out_How satisfied are you?`
  <chr>                           
1 vsat                            
2 unsat

Upvotes: 1

Related Questions