如何将数据框的一列转换成行,同时保持数据框在R中的结构?

  • 本文关键字:数据 结构 转换 一列 r transpose
  • 更新时间 :
  • 英文 :


我有一个像这样的数据框架:

df <- data.frame(ID = c("A","A","A","A","A","B","B","B","B","B","C","C","C","C","C"),
code = c(1,2,2,3,3,1,2,2,1,1,3,2,2,1,1),
class =  c(2,4,5,5,2,3,2,5,1,2,4,5,3,2,1),
n = c(10,10,20,15,25,20,10,10,20,25,10,15,10,15,15))

我想对它进行转置,使列class成为行,n基于ID,classn展开。所以它看起来像这样:

|ID|class|1 |2 |3 |4 |5 |
|A |1    |  |10|  |  |  |
|A |2    |  |  |  |10|20|
|A |3    |  |25|  |  |15|
....

您可以使用pivot_widerarrange来获得列的数字顺序,如下所示:

library(dplyr)
library(tidyr)
df %>%
arrange(class) %>%
pivot_wider(names_from = class, values_from = n) %>%
arrange(ID, code)
#> # A tibble: 8 × 7
#>   ID     code   `1`   `2`   `3`   `4`   `5`
#>   <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 A         1    NA    10    NA    NA    NA
#> 2 A         2    NA    NA    NA    10    20
#> 3 A         3    NA    25    NA    NA    15
#> 4 B         1    20    25    20    NA    NA
#> 5 B         2    NA    10    NA    NA    10
#> 6 C         1    15    15    NA    NA    NA
#> 7 C         2    NA    NA    10    NA    15
#> 8 C         3    NA    NA    NA    10    NA

创建于2022-12-27使用reprex v2.0.2

最新更新