これは本当に簡単な質問ですが、私はすぐに困惑しています。SpatialPointsDataFrameの0を特定の列のNAに変更します。
RのSpatialPointsDataFrameの0または0.00をNAに変更するにはどうすればよいですか? 私はこれを特定の列に対してのみ行いたいと思います。
たとえば、l8.stationsというデータセットがあり、これを行うのは l8.stations [11:18]の場合のみです。どうしますか?
これは本当に簡単な質問ですが、私はすぐに困惑しています。SpatialPointsDataFrameの0を特定の列のNAに変更します。
RのSpatialPointsDataFrameの0または0.00をNAに変更するにはどうすればよいですか? 私はこれを特定の列に対してのみ行いたいと思います。
たとえば、l8.stationsというデータセットがあり、これを行うのは l8.stations [11:18]の場合のみです。どうしますか?
これは、標準のdata.frameで行うよりややこしいことです。これを行う1つの方法は、標準のdata.frameに変更したいデータ列を抽出することです。次に、data.frameのサブセットと代入を使用して、通常の方法でそれらを変更します。hereを参照してください。
したがって、たとえば、列5にNAに整数ゼロを変える:我々はこれを行うことができます8:
df = as.data.frame(l8.stations)[, 5:8] # extract desired columns into a data.frame
df[df == 0] = NA # change values that are zero into NA
l8.stations[1:NROW(l8.stations), 5:8] = df # insert result back into spatial points data frame
は今、あなたはまた、0.0の値に対して同じことをやって言及しました。この場合、整数ではなく実数を扱う場合、ゼロと等しいかどうかを実際にテストする必要がありますが、その値はいくつかの小さなしきい値よりも小さいことを確認してください。なぜ我々が実数でこれを行うのかを理解するには、単純にそれらがゼロに等しいことをテストするのではなく、thisを読んでください。そのため、例えば、我々は上記と同じですが、以下eps
以上の値をテストを行うことができますeps = 1e-10
としてカットオフを使用します
df = as.data.frame(l8.stations)[, 5:8]
df[abs(df) < eps] = NA
l8.stations[1:NROW(l8.stations), 5:8] = df
にテストするためのいくつかの再現性のダミーデータを:
library(sp)
set.seed(1331)
pts = cbind(1:5, 1:5)
dimnames(pts)[[1]] = letters[1:5]
df = data.frame(sample(0:3, 5, T),
sample(0:3, 5, T),
sample(0:3, 5, T),
sample(0:3, 5, T),
sample(0:3, 5, T),
sample(0:3, 5, T),
sample(0:3, 5, T),
sample(0:3, 5, T))
row.names(df) = letters[1:5]
colnames(df) = LETTERS[1:8]
l8.stations = SpatialPointsDataFrame(pts, df)