dplyr::spread 避免常见行的 NA 结果

dplyr::spread avoid NA results from common rows

我想重塑以下数据。

# A tibble: 184 x 5
# Groups:   variable [46]
 
   variable         WAVELENGTH_DIVISION X
   <chr>            <fct>               <dbl>
 1 A                BLUE                0.0762
 2 A                GREEN               0.137 
 3 A                YELLOW              0.354 
 4 A                RED                 0.433 
 5 B                BLUE                0.0712
 6 B                GREEN               0.175 
 7 B                YELLOW              0.360 
 8 B                RED                 0.394 
 9 C                BLUE                0.125 
10 C                GREEN               0.143
...

我尝试使用 mytable %>% spread(WAVELENGTH_DIVISION, X) 从中获得以下内容。

   variable           BLUE   GREEN  YELLOW RED
   <chr>              <dbl>  <dbl>  <dbl>  <dbl>
 1 A                  0.0762 NA     NA     NA    
 2 A                  NA     0.137  NA     NA    
 3 A                  NA     NA     0.354  NA    
 4 A                  NA     NA     NA     0.433
 5 B                  0.0712 NA     NA     NA    
 6 B                  NA     0.175  NA     NA    
 7 B                  NA      NA    0.360  NA    
 8 B                  NA      NA    NA     0.394
 9 C                  0.125   NA    NA     NA    
10 C                  NA      0.143 NA     NA
...

但是我想在没有 NA 的情况下实现 table,我应该怎么做才能达到预期的效果 table 显示在这里。

   variable           BLUE   GREEN  YELLOW RED
   <chr>              <dbl>  <dbl>  <dbl>  <dbl>
 1 A                  0.0762 0.137  0.354  0.433  
 2 B                  0.0712 0.175  0.360  0.394
 3 C                  0.125  0.143  ...
 ...

您可以使用 pivot_wider。但是,您的代码对我有用。

df %>%
      pivot_wider(names_from = WAVELENGTH_DIVISION, values_from = X)

# variable   BLUE GREEN YELLOW    RED
# <chr>     <dbl> <dbl>  <dbl>  <dbl>
# 1 A        0.0762 0.137  0.354  0.433
# 2 B        0.0712 0.175  0.36   0.394
# 3 C        0.125  0.143 NA     NA