数据表,按组去除前导缺失值

4
以下是一个数据表示例,我想要删除值为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

1个回答

3

一个基本的方法是使用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

1
你也可以使用 which.max,因为它会取第一个 TRUE - 这样就不需要再进行子集筛选 [1] 了。 - thelatemail

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接