如何将Dataframe从组转换为列?

时间:2016-10-28 12:08:32

标签: r dataframe dplyr plyr

我在R中转换此数据框时遇到问题。我有一个具有此形状的数据框:

|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|

我想将其转换为:

|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   |

有什么想法吗?感谢

1 个答案:

答案 0 :(得分:2)

试试这个:

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
相关问题