使用基本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)
答案 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)