0

I'm having trouble to transform this data frame in R. I have a dataframe that has this shape:

|University                            |created |  N|
|:-------------------------------------|:-------|--:|
|BL.CARDIFF - Cardiff University       |2016    |  1|
|BL.STRATH - University of Strathclyde |2015    |  1|
|CDL.UNAVCO - UNAVCO                   |2016    |  2|
|TIB.TIB - TIB Hannover                |2011    |  3|
|TIB.TIB - TIB Hannover                |2012    | 10|
|TIB.TIB - TIB Hannover                |2013    |  3|

I want to transform it to something like:

|University                            |2014 | 2015| 2016|
|:-------------------------------------|:----|-----|----:|
|BL.CARDIFF - Cardiff University       |1    | 2   | 1   |
|BL.STRATH - University of Strathclyde |2    | 1   | 2   |
|TIB.TIB - TIB Hannover                |2    | 10  | 1   |

Any ideas? Thanks

kriztean
  • 229
  • 3
  • 13

1 Answers1

2

Try this:

df <- data.frame(University = c('BL.CARDIFF - Cardiff University',
                                'BL.STRATH - University of Strathclyde',
                                'CDL.UNAVCO - UNAVCO',                  
                                'TIB.TIB - TIB Hannover',
                                'TIB.TIB - TIB Hannover',
                                'TIB.TIB - TIB Hannover'), created=c(2016,2015,2016,2011,2012,2013),
                                N=c(1,1,2,3,10,3))
library(reshape2)
dcast(df, University~created, value.var = 'N')

University 2011 2012 2013 2015 2016
1       BL.CARDIFF - Cardiff University   NA   NA   NA   NA    1
2 BL.STRATH - University of Strathclyde   NA   NA   NA    1   NA
3                   CDL.UNAVCO - UNAVCO   NA   NA   NA   NA    2
4                TIB.TIB - TIB Hannover    3   10    3   NA   NA
Sandipan Dey
  • 21,482
  • 2
  • 51
  • 63