数据 table,按组删除前导缺失值
Data table, removing leading missing values by group
下面是一个示例数据 table,我想删除值为 NA 且前面的行都没有值的行,即也有 NA,并且按组。由于并非所有人都有相同数量的前导缺失值,我陷入困境并且没有任何运气搜索。
示例数据table
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
完成数据table
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,这是相似的。
一个基本的方法是使用 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
下面是一个示例数据 table,我想删除值为 NA 且前面的行都没有值的行,即也有 NA,并且按组。由于并非所有人都有相同数量的前导缺失值,我陷入困境并且没有任何运气搜索。
示例数据table
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
完成数据table
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,这是相似的。
一个基本的方法是使用 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