【问题标题】:How best to use R to reshape dataframe from long to wide and combine values如何最好地使用 R 将数据框从长到宽重塑并组合值
【发布时间】:2021-10-21 22:57:54
【问题描述】:

我有一个大约 2000 行和 3 列的数据框。本质上,我想重塑这个数据框,使其更宽而不是更长。这是我当前数据的一个示例:

ID Procedure Date
D55 Sedation 01/01/2001
D55 Excision 01/01/2001
D55 Biopsy 01/01/2001
A66 Sedation 02/02/2001
A66 Excision 02/02/2001
T44 Sedation 03/03/2001
T44 Biopsy 03/03/2001
T44 Sedation 04/04/2001
T44 Excision 04/04/2001
G88 Sedation 05/05/2001
G88 Biopsy 05/05/2001
G88 Sedation 06/06/2001
G88 Excision 06/06/2001
G88 Sedation 07/07/2001
G88 Re-excision 07/07/2001

我希望每一行都是 ID 的一行,所以我想创建这样的东西:

ID Date 1 Procedure(s) Date 2 Procedure(s) Date 3 Procedure(s)
D55 01/01/2001 Sedation, Excision, Biopsy
A66 02/02/2001 Sedation, Excision
T44 03/03/2001 Sedation, Biopsy 04/04/2001 Sedation, Excision
G88 05/05/2001 Sedation, Biopsy 06/06/2001 Sedation, Excision 07/07/2001 Sedation, Re-excision

大多数 ID 都有相同的日期,但记录的程序不同。有少数人在随后的日期接受进一步的程序。我看不到任何超过 3 个不同日期的数据,但计算每个 ID 记录的日期的方法会很有用。

到目前为止,我已经尝试过使用 cast 和 dcast,但我并没有真正取得任何进展。我对 R 很陌生,所以任何帮助将不胜感激!感谢阅读。

【问题讨论】:

    标签: r reshape reshape2


    【解决方案1】:
    library(tidyverse)
    df %>%
      group_by(ID, Date) %>%
      summarize(Procedure = paste0(Procedure, collapse = ", ")) %>%
      mutate(col = row_number()) %>%
      ungroup() %>%
      pivot_wider(names_from = col, values_from = c(Date, Procedure))
    

    这目前需要在之后进行一些重新排序,这可以像下面的答案一样完成:https://stackoverflow.com/a/60400134/6851825

    # A tibble: 4 x 7
      ID    Date_1 Date_2 Date_3 Procedure_1                Procedure_2        Procedure_3          
      <chr> <chr>  <chr>  <chr>  <chr>                      <chr>              <chr>                
    1 A66   2/2/01 NA     NA     Sedation, Excision         NA                 NA                   
    2 D55   1/1/01 NA     NA     Sedation, Excision, Biopsy NA                 NA                   
    3 G88   5/5/01 6/6/01 7/7/01 Sedation, Biopsy           Sedation, Excision Sedation, Re-excision
    4 T44   3/3/01 4/4/01 NA     Sedation, Biopsy           Sedation, Excision NA                   
    

    【讨论】:

      猜你喜欢
      • 2021-04-23
      • 1970-01-01
      • 1970-01-01
      • 2017-05-05
      • 1970-01-01
      • 2017-11-04
      • 1970-01-01
      相关资源
      最近更新 更多