我na.locf对zoo包中的功能有疑问.在下面的数据框架中,我想删除领先的NA(1987年,1988年),但保留前一年(1993年)的有效值.
Year X
1987 NA
1988 NA
1989 2
1990 5
1991 9
1992 16
1993 NA
1994 27
1995 36
Run Code Online (Sandbox Code Playgroud)
有没有人有这个问题的解决方案?
该na.locf设计填补缺失观察,没有将其删除.zoo包还有一个na.trim删除前导和/或尾随观察的功能:
na.trim(mydf)
Run Code Online (Sandbox Code Playgroud)
这使:
> na.trim(mydf)
Year X
3 1989 2
4 1990 5
5 1991 9
6 1992 16
7 1993 NA
8 1994 27
9 1995 36
Run Code Online (Sandbox Code Playgroud)
使用该sides参数,您可以选择是仅删除前导或尾随缺失的观测值,还是同时删除两者.例如,使用sides = 'right'将仅删除尾随缺失的观察结果并保留缺少的主要观察结果:
> na.trim(mydf, sides = 'right')
Year X
1 1987 NA
2 1988 NA
3 1989 2
4 1990 5
5 1991 9
6 1992 16
7 1993 NA
8 1994 27
9 1995 36
Run Code Online (Sandbox Code Playgroud)
因此,使用sides = 'left'将仅删除缺少的缺失观察结果并保留尾随缺失的观察结果:
> na.trim(mydf, sides = 'left')
Year X
3 1989 2
4 1990 5
5 1991 9
6 1992 16
7 1993 NA
8 1994 27
9 1995 36
10 1996 NA
Run Code Online (Sandbox Code Playgroud)
使用数据:
mydf <- structure(list(Year = 1987:1996, X = c(NA, NA, 2L, 5L, 9L, 16L, NA, 27L, 36L, NA)),
.Names = c("Year", "X"), class = "data.frame", row.names = c(NA,-10L))
Run Code Online (Sandbox Code Playgroud)