【问题标题】:dplyr::spread avoid NA results from common rows [duplicate]dplyr::spread 避免来自常见行的 NA 结果 [重复]
【发布时间】:2020-07-05 11:58:22
【问题描述】:

我想重塑以下数据。

# 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 %&gt;% 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
...

但是我正在尝试实现一个没有NAs 的表,我应该怎么做才能达到预期的效果 此处显示的表格。

   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  ...
 ...

【问题讨论】:

  • spread 现在已被 pivot_wider 取代。当我复制您显示的数据并使用 mytable %&gt;% spread(WAVELENGTH_DIVISION, X) 时,它会给出预期的输出。您可以使用dput 添加您的数据吗?

标签: r dplyr reshape


【解决方案1】:

您可以使用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     

【讨论】:

  • 你说得对,如果我删除了两列我没有包含在此处的列,我会得到预期的答案,因为我认为它们无关紧要。删除多余的列得到了预期的结果。
猜你喜欢
  • 2021-05-18
  • 2012-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多