将行转换为R中的多个列

时间:2017-08-14 15:45:58

标签: r transpose

我有以下数据框df

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

请帮忙

1 个答案:

答案 0 :(得分: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)