【问题标题】:r dplyr group_by values collapse and paster dplyr group_by 值折叠和粘贴
【发布时间】:2017-03-01 18:45:42
【问题描述】:

我有一个看起来像这样的数据集

Id   Subject    Date        Vitals       Value
10   John       2001-05-29  HeartRate    65
10   John       2001-05-29  HeartRate    68
10   John       2001-05-29  BP-Arterial  48
10   John       2001-05-29  PulseRate    64
34   Pete       2005-08-15  HeartRate    68
34   Pete       2005-08-15  BP-Arterial  56
10   John       2004-09-25  HeartRate    65
10   John       2004-09-25  BP-Arterial  64
10   John       2004-09-25  PulseRate    63   
34   Pete       2007-07-21  BP-Arterial  68
34   Pete       2007-07-21  PulseRate    56

我想做两件事,

1) 按生命体征分组。 2) 计算在特定日期(ID + Date) 为每个 ID 测量的 Vitals 数量,然后折叠并粘贴这些值,如下所示。

Vitals      Series
HeartRate   2,1,1
BP-Arterial 1,1,1,1
PulseRate   1,1,1 

系列列下HeartRate 的值为2, 1, 1,因为测量了心率

ID 10 在 2001-05-29 两次,

2005 年 8 月 15 日 ID 34 一次,

2004 年 9 月 24 日 ID 10 一次

不知道如何使用 dplyr 折叠和粘贴这些值,非常感谢任何帮助。

【问题讨论】:

    标签: r group-by dplyr collapse


    【解决方案1】:

    计算在特定日期(ID + 日期)为每个 ID 测量的 Vitals 数量

    这意味着您需要按所有三个分组。然后,我们可以仅通过 Vitals 重新组合以进行最终崩溃:

    dat %>% group_by(Vitals, Id, Date) %>%
        summarize(n = n()) %>%
        ungroup() %>%
        group_by(Vitals) %>%
        summarize(Series = paste(n, collapse = ','))
    # # A tibble: 3 × 2
    #        Vitals  Series
    #        <fctr>   <chr>
    # 1 BP-Arterial 1,1,1,1
    # 2   HeartRate   2,1,1
    # 3   PulseRate   1,1,1
    

    【讨论】:

      【解决方案2】:

      使用dplyrrle 即运行长度编码,请参阅?rle 了解更多详情

      library(dplyr)
      
      newDF = DF %>%
          group_by(Id,Date) %>%
          do(.,data.frame(Series=paste(rle(.$Vitals)$lengths,collapse=","),stringsAsFactors=FALSE)) %>%
          as.data.frame()
      
      newDF
      #  Id       Date Series
      #1 10 2001-05-29  2,1,1
      #2 10 2004-09-25  1,1,1
      #3 34 2005-08-15    1,1
      #4 34 2007-07-21    1,1
      

      【讨论】:

      • @Ossan,我期待的是为 Vitals 而不是 ID 创建的系列
      猜你喜欢
      • 2013-08-30
      • 2014-10-03
      • 1970-01-01
      • 2018-02-05
      • 1970-01-01
      • 2020-02-18
      • 1970-01-01
      • 2021-04-17
      相关资源
      最近更新 更多