首页 > 解决方案 > 从长到宽重塑并粘贴列名

问题描述

我有一个包含多行的长数据框。我想把它改成宽的,只剩下 1 行。

dput(df) > 
structure(list(A = c(2, 4, 6), B = c(1, 3, 9), C = c(0, 1, 0)), row.names = c(NA, 
-3L), class = c("tbl_df", "tbl", "data.frame"))


 df > 
      A     B     C
1     2     1     0
2     4     3     1
3     6     9     0

我想将其重塑为:

df1 > 
A_1   A_2    A_3    B_1     B_2     B_3    C_1      C_2     C_3
2      4      6      1        3       9      0        1       0

标签: r

解决方案


您可以在数据中创建行号列并获取宽格式数据。

library(dplyr)
library(tidyr)

df %>%
  mutate(row = row_number()) %>%
  pivot_wider(names_from = row, values_from = A:C)

#    A_1   A_2   A_3   B_1   B_2   B_3   C_1   C_2   C_3
#  <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1     2     4     6     1     3     9     0     1     0

推荐阅读