我正在尝试使用na.locf
从包装中zoo
使用分组数据dplyr
。我在这个问题上使用第一个解决方案:使用 dplyr 窗口函数生成尾随值(填写 NA 值) https://stackoverflow.com/questions/23340150/using-dplyr-window-functions-to-make-trailing-values-fill-in-na-values
library(dplyr);library(zoo)
df1 <- data.frame(id=rep(c("A","B"),each=3),problem=c(1,NA,2,NA,NA,NA),ok=c(NA,3,4,5,6,NA))
df1
id problem ok
1 A 1 NA
2 A NA 3
3 A 2 4
4 B NA 5
5 B NA 6
6 B NA NA
当组内所有数据均为 NA 时,就会出现问题。正如您在问题栏中看到的,na.locf
id=B 的数据来自另一组:id=A 的最后一个数据。
df1 %>% group_by(id) %>% na.locf()
Source: local data frame [6 x 3]
Groups: id [2]
id problem ok
<chr> <chr> <chr>
1 A 1 <NA>
2 A 1 3
3 A 2 4
4 B 2 5 #problem col is wrong
5 B 2 6 #problem col is wrong
6 B 2 6 #problem col is wrong
这是我的预期结果。 id=B 的数据与 id=A 中的数据无关
id problem ok
<chr> <chr> <chr>
1 A 1 <NA>
2 A 1 3
3 A 2 4
4 B NA 5
5 B NA 6
6 B NA 6