zoo
パッケージのna.locf
機能に関する質問があります。以下のデータフレーム内で、私は先進的なNAs(1987年、1988年)を削除したいが、前年(1993年)の有効な値でそれらを保持したい。na.locf先進的なNAsを削除する、他の人を保つ
Year X
1987 NA
1988 NA
1989 2
1990 5
1991 9
1992 16
1993 NA
1994 27
1995 36
誰にもこの問題の解決策がありますか?
zoo
パッケージのna.locf
機能に関する質問があります。以下のデータフレーム内で、私は先進的なNAs(1987年、1988年)を削除したいが、前年(1993年)の有効な値でそれらを保持したい。na.locf先進的なNAsを削除する、他の人を保つ
Year X
1987 NA
1988 NA
1989 2
1990 5
1991 9
1992 16
1993 NA
1994 27
1995 36
誰にもこの問題の解決策がありますか?
na.locf
は、観測値の欠落を補うためであり、削除しないように設計されています。
na.trim(mydf)
います:sides
パラメータで
> 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
だけ不足している観測を先頭または末尾に削除するかどうかを選択することができます動物園のパッケージには、先頭および/または末尾の観測を削除na.trim
機能を持っていますまたは両方。たとえば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
その結果、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
使用データ:
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))
あなたのデータフレームの名前が「df」であると仮定します。
すべてのNAの無効な番号に、言う-1
df$X[is.na(df$X)] <- -1
今すぐランレングス符号化を行うと、-1,2のラン長が1
より大きい観測値を削除変換rle(df$X)
Run Length Encoding
lengths: int [1:5] 2 1 1 ...
values : num [1:5] -1 2 5 ...
df$runs <- rep(rle(df$X)$lengths,rle(df$X)$lengths)
data2 <- df[!(df$X==-1 & df$runs > 1) , ]
今私は確信しています –
@DavidArenburg質問は私たちがNAで先行されていないNAを維持する必要があると述べていますが、私たちは値で囲まれたままにすることができます –
おそらく、なぜOPが「先導」しているのか分かりません。この質問は私には不透明なようです。 –
1 986はNAではない、あなたは1987年を保つだろうか? – zx8754