2017-08-14 23 views
-2

多列我有以下的数据帧DF移调行到R中

ID Year Var value 
1 2011 x1 1.2 
1 2011 x2 2 
1 2012 x1 1.5 
1 2012 x2 2.3 
3 2013 x1 3 
3 2014 x1 4 
4 2015 x1 5 
5 2016 x1 6 
4 2016 x1 2 

我想在下面的格式

ID Year x1 x2 
1 2011 1.2 2 
1 2011 2 NA 
1 2012 1.5 2.3 
3 2013 3 NA 
3 2014 4 4 
4 2015 5 NA 
4 2016 2 NA 
5 2016 6 NA 

请帮

+0

[如何将数据从长格式重新整形为宽格式?](https://stackoverflow.com/questions/5890584/how-to-reshape-data-from-long-to-wide-format) – Uwe

回答

1

使用tidyr库来转换数据,我相信这就是你要找的东西:

df <- data.frame(stringsAsFactors=FALSE, 
      ID = c(1L, 1L, 1L, 1L, 3L, 3L, 4L, 5L, 4L), 
     Year = c(2011L, 2011L, 2012L, 2012L, 2013L, 2014L, 2015L, 2016L, 2016L), 
     Var = c("x1", "x2", "x1", "x2", "x1", "x1", "x1", "x1", "x1"), 
     value = c(1.2, 2, 1.5, 2.3, 3, 4, 5, 6, 2) 
) 

library(tidyr) 

df2 <- df %>% 
    spread(Var, value)