如何在tidyverse中转置数据帧?

时间:2016-10-28 13:36:46

标签: r dataframe transpose tidyr tidyverse

使用基本R,我可以转置一个数据帧,比如mtcars,它包含同一类的所有列:

as.data.frame(t(mtcars))

或管道:

library(magrittr)
mtcars %>% t %>% as.data.frame

如何在tidyr或tidyverse包中完成相同的工作?

我的尝试如下:

  

错误:行的标识符重复

library(tidyverse)
mtcars %>% gather(var, value, everything()) %>% spread(var, value)

1 个答案:

答案 0 :(得分:17)

尝试使用add_rownames

add_rownames(mtcars) %>% 
         gather(var, value, -rowname) %>% 
         spread(rowname, value) 

在较新版本中,rownames_to_column会替换add_rownames

mtcars %>%
   rownames_to_column %>% 
   gather(var, value, -rowname) %>% 
   spread(rowname, value)