【问题标题】:Data table, removing leading missing values by group数据表,按组删除前导缺失值
【发布时间】:2015-06-11 03:36:59
【问题描述】:

下面是一个示例数据表,我想按组删除值为 NA 且没有较早行具有值的行,即也 NA 和组。由于并非所有人都有相同数量的前导缺失值,因此我陷入困境并且没有任何运气搜索。

示例数据表

    group    date     value
      a 2015-01-01    NA
      a 2015-01-02     2
      a 2015-01-03     3
      a 2015-01-04    NA
      a 2015-01-05     2
      b 2015-01-01    NA
      b 2015-01-02    NA
      b 2015-01-03     2
      b 2015-01-04    NA
      b 2015-01-05     2

完成的数据表

    group    date     value
      a 2015-01-02     2
      a 2015-01-03     3
      a 2015-01-04    NA
      a 2015-01-05     2
      b 2015-01-03     2
      b 2015-01-04    NA
      b 2015-01-05     2

稍后我计划通过之前和之后的值来估算缺失值。

编辑:发现之前提出的问题here,类似。

【问题讨论】:

    标签: r data.table


    【解决方案1】:

    基本方法是使用which.N,如下所示:

    DT[, .SD[(which(!is.na(value))[1]):.N], by = group]
    ##    group       date value
    ## 1:     a 2015-01-02     2
    ## 2:     a 2015-01-03     3
    ## 3:     a 2015-01-04    NA
    ## 4:     a 2015-01-05     2
    ## 5:     b 2015-01-03     2
    ## 6:     b 2015-01-04    NA
    ## 7:     b 2015-01-05     2
    

    【讨论】:

    • 您也可以使用which.max,因为它将占用第一个TRUE - 无需将子集设置为[1]
    猜你喜欢
    • 2021-06-25
    • 2013-05-03
    • 2017-12-26
    • 2013-04-27
    • 1970-01-01
    • 2020-11-14
    • 2022-11-20
    • 2019-08-16
    相关资源
    最近更新 更多