tidyr::spread() with multiple keys and values

后端 未结 3 1210
失恋的感觉
失恋的感觉 2020-12-21 10:10

I assume this has been asked multiple times but I couldn\'t find the proper words to find a workable solution.

How can I spread() a data frame based on

3条回答
  •  北海茫月
    2020-12-21 11:14

    With the devel version of tidyr (tidyr_0.8.3.9000), we can use pivot_wider to reshape multiple value columns from long to wide format

    library(dplyr)
    library(tidyr)
    library(stringr)
    df %>%
       mutate(time = str_c("time", time)) %>%
       pivot_wider(names_from = time, values_from = c("x", "y"), names_sep="")
    # A tibble: 10 x 7
    #      id  xtime1 xtime2  xtime3  ytime1 ytime2 ytime3
    #                  
    # 1     1 -0.256   0.483 -0.254  -0.652   0.655  0.291
    # 2     2  1.10   -0.596 -1.85    1.09   -0.401 -1.24 
    # 3     3  0.756  -2.19  -0.0779 -0.763  -0.335 -0.456
    # 4     4 -0.238  -0.675  0.969  -0.829   1.37  -0.830
    # 5     5  0.987  -2.12   0.185   0.834   2.14   0.340
    # 6     6  0.741  -1.27  -1.38   -0.968   0.506  1.07 
    # 7     7  0.0893 -0.374 -1.44   -0.0288  0.786  1.22 
    # 8     8 -0.955  -0.688  0.362   0.233  -0.902  0.736
    # 9     9 -0.195  -0.872 -1.76   -0.301   0.533 -0.481
    #10    10  0.926  -0.102 -0.325  -0.678  -0.646  0.563
    

    NOTE: The numbers are different as there was no set seed while creating the sample dataset

提交回复
热议问题