1

I have data that looks like this:

Subject  Visit  Test   Value  
   1       1      1     100  
   1       2      1      75  
   1       3      1     110  
   1       1      2      12  
   1       2      2      11  
   1       3      2       9  
   2       1      1      125  
   2       2      1      128 

....

I want it to look like

Subject      Visit      Test1      Test2   
   1           1         100          12      
   1           2          75          11  
   1           3         110           9  
   2           1         125          15  
   2           2         128          13  

I want to keep the Subject and Visit and pivot Test and Value using pivot_wide.

Z.Lin
  • 28,055
  • 6
  • 54
  • 94
Peter Bonate
  • 75
  • 1
  • 6

1 Answers1

5
df <- read.table(text="Subject  Visit  Test   Value  
1       1      1     100  
1       2      1      75  
1       3      1     110  
1       1      2      12  
1       2      2      11  
1       3      2       9  
2       1      1      125  
2       2      1      128", strin=F,h=T)

library(tidyr)
pivot_wider(data = df, names_from = Test, values_from = Value, names_prefix = "Test")
#> # A tibble: 5 x 4
#>   Subject Visit Test1 Test2
#>     <int> <int> <int> <int>
#> 1       1     1   100    12
#> 2       1     2    75    11
#> 3       1     3   110     9
#> 4       2     1   125    NA
#> 5       2     2   128    NA

Created on 2019-09-23 by the reprex package (v0.3.0)

moodymudskipper
  • 46,417
  • 11
  • 121
  • 167