【发布时间】:2017-06-05 19:23:12
【问题描述】:
我需要根据先前和/或前向值、基于分组来填充缺失值。我想使用 dplyr 来完成此任务(尽管也欢迎使用 data.table 解决方案)。
样本数据:
testing <- tibble(key = c(10,10,10,10,10,10,20,20,20,20,20,20),
year = c(15,15,16,16,17,17,15,15,16,16,17,17),
name = c("abc","abc","","","dfg","dfg",
"","","nmm","nmm","",""),
is_name = c(1,1,0,0,1,1,0,0,0,0,0,0))
key year name is_name
<dbl> <dbl> <chr> <dbl>
1 10 15 abc 1
2 10 15 abc 1
3 10 16 0
4 10 16 0
5 10 17 dfg 1
6 10 17 dfg 1
7 20 15 0
8 20 15 0
9 20 16 nmm 0
10 20 16 nmm 0
11 20 17 0
12 20 17 0
我想以某种方式填充缺失的名称 (name),如果相同 key 的前一个 year 标记为 is_name==1,则用它来填充缺失的名称。
所以输出可以是:
key year name is_name name_new
<dbl> <dbl> <chr> <dbl> <chr>
1 10 15 abc 1 abc
2 10 15 abc 1 abc
3 10 16 0 abc
4 10 16 0 abc
5 10 17 dfg 1 dfg
6 10 17 dfg 1 dfg
7 20 15 0
8 20 15 0
9 20 16 nmm 0 nmm
10 20 16 nmm 0 nmm
11 20 17 0
12 20 17 0
我尝试使用 lag 和 leap,但它并没有正确地超出组 (key)。
谢谢!
【问题讨论】:
-
na.locf来自zoo-package 是您正在寻找的东西 -
@Jaap 我已经使用
na.locf准备了一个答案,然后看到了您的评论。我应该发布还是您打算发布自己的?
标签: r dplyr missing-data