如何在 tidyverse 中转置数据框?
How to transpose a dataframe in tidyverse?
使用基本的 R,我可以转置一个数据帧,比如 mtcars
,它具有相同的所有列 class:
as.data.frame(t(mtcars))
或者用管道:
library(magrittr)
mtcars %>% t %>% as.data.frame
如何在 tidyr 或 tidyverse 包中完成相同的任务?
我下面的尝试给出了:
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
替换了 spread
:
mtcars %>%
tibble::rownames_to_column() %>%
pivot_longer(-rowname) %>%
pivot_wider(names_from=rowname, values_from=value)
现在有一个专门用于执行此操作的函数,rotate_df()
来自 sjmisc
。
library(sjmisc)
mtcars %>% rotate_df()
# Mazda RX4 Mazda RX4 Wag Datsun 710 Hornet 4 Drive Hornet Sportabout Valiant Duster 360
#mpg 21.00 21.000 22.80 21.400 18.70 18.10 14.30
#cyl 6.00 6.000 4.00 6.000 8.00 6.00 8.00
#disp 160.00 160.000 108.00 258.000 360.00 225.00 360.00
#hp 110.00 110.000 93.00 110.000 175.00 105.00 245.00
#drat 3.90 3.900 3.85 3.080 3.15 2.76 3.21
#etc
该函数还允许您使用旋转将行名转换为真正的 df 数据。非常感谢软件包创建者。
使用基本的 R,我可以转置一个数据帧,比如 mtcars
,它具有相同的所有列 class:
as.data.frame(t(mtcars))
或者用管道:
library(magrittr)
mtcars %>% t %>% as.data.frame
如何在 tidyr 或 tidyverse 包中完成相同的任务?
我下面的尝试给出了:
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
替换了 spread
:
mtcars %>%
tibble::rownames_to_column() %>%
pivot_longer(-rowname) %>%
pivot_wider(names_from=rowname, values_from=value)
现在有一个专门用于执行此操作的函数,rotate_df()
来自 sjmisc
。
library(sjmisc)
mtcars %>% rotate_df()
# Mazda RX4 Mazda RX4 Wag Datsun 710 Hornet 4 Drive Hornet Sportabout Valiant Duster 360
#mpg 21.00 21.000 22.80 21.400 18.70 18.10 14.30
#cyl 6.00 6.000 4.00 6.000 8.00 6.00 8.00
#disp 160.00 160.000 108.00 258.000 360.00 225.00 360.00
#hp 110.00 110.000 93.00 110.000 175.00 105.00 245.00
#drat 3.90 3.900 3.85 3.080 3.15 2.76 3.21
#etc
该函数还允许您使用旋转将行名转换为真正的 df 数据。非常感谢软件包创建者。