我正在尝试使用
当一个组内所有数据都是NA时,问题就出现了。如您在问题列中所看到的那样,id=B的
这是我期望的结果。id=B的数据与id=A中的数据无关。
zoo
包中的na.locf
函数来处理使用dplyr
分组的数据。我正在使用此问题的第一个解决方案:使用dplyr窗口函数使后续值填充NA值。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时,问题就出现了。如您在问题列中所看到的那样,id=B的
na.locf
数据来自另一个组: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
mutate_all
一样。 - Pierre Lapointe