Ira*_*kli 5 transpose r dataframe tidyr tidyverse
使用基本R,我可以转置一个数据帧,比如说mtcars,它包含同一个类的所有列:
as.data.frame(t(mtcars))
Run Code Online (Sandbox Code Playgroud)
或者用管道:
library(magrittr)
mtcars %>% t %>% as.data.frame
Run Code Online (Sandbox Code Playgroud)
如何在tidyr或tidyverse包中完成相同的操作?
我在下面的尝试给出:
错误:行的重复标识符
library(tidyverse)
mtcars %>% gather(var, value, everything()) %>% spread(var, value)
Run Code Online (Sandbox Code Playgroud)
akr*_*run 24
试试吧 add_rownames
add_rownames(mtcars) %>%
gather(var, value, -rowname) %>%
spread(rowname, value)
Run Code Online (Sandbox Code Playgroud)
在较新的版本中,rownames_to_column替换add_rownames
mtcars %>%
rownames_to_column %>%
gather(var, value, -rowname) %>%
spread(rowname, value)
Run Code Online (Sandbox Code Playgroud)
Joe*_*Joe 11
现在有一个专门构建的函数可以执行此操作,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
Run Code Online (Sandbox Code Playgroud)
该函数还允许您通过旋转将行名转换为真实的 df 数据。非常感谢包的创建者。
| 归档时间: |
|
| 查看次数: |
17203 次 |
| 最近记录: |