如何在dydyverse中转置数据帧? [英] How to transpose a dataframe in tidyverse?

查看:94
本文介绍了如何在dydyverse中转置数据帧?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用基本R,我可以转置一个数据框,例如 mtcars ,它具有相同类的所有列:

Using basic R, I can transpose a dataframe, say mtcars, which has all columns of the same class:

as.data.frame(t(mtcars))

或使用管道:

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

如何在tidyr或tidyverse包中实现相同的功能?

How to accomplish the same within tidyr or tidyverse packages?

我在下面的尝试给出:


错误:行的标识符重复

Error: Duplicate identifiers for rows



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


推荐答案

尝试使用 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) 

在更新的版本中, pivot_wider 替换了点差

In the even newer version, pivot_wider replaces spread:

mtcars %>%
   tibble::rownames_to_column() %>%  
   pivot_longer(-rowname) %>% 
   pivot_wider(names_from=rowname, values_from=value) 

这篇关于如何在dydyverse中转置数据帧?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆