特定の値をNAに置き換える(またはNAを特定の値に置き換える)
国土数値情報からダウンロードしたメッシュデータの中にはunknown
という値が含まれており、
各フィールドはキャラクターとして認識され、意図している数値型として認識されていない事例に遭遇した。
皆さんどうしてるんですかね?
とりあえずunknown
という値を置き換えるべくネット検索したところ、
gdata
パッケージに便利なものがあったのでメモ。
詳細はpackage Vignetteに詳しい
library(gdata)
xNum <- c(0, 6, 0, 7, 8, 9, NA) xNum
[1] 0 6 0 7 8 9 NA
デフォルトではNAがunknown
として認識される。
isUnknown(x = xNum)
[1] FALSE FALSE FALSE FALSE FALSE FALSE TRUE
0をunknown
とする場合は以下のようにする。
isUnknown(x = xNum, unknown = 0)
[1] TRUE FALSE TRUE FALSE FALSE FALSE FALSE
複数のunknown
として指定する場合には以下のようにする。
isUnknown(x = xNum, unknown = c(0, NA))
[1] TRUE FALSE TRUE FALSE FALSE FALSE TRUE
NAを置き換える場合にはNAToUnknown()
関数を利用する。
NAToUnknown(x = xNum, unknown = 999)
[1] 0 6 0 7 8 9 999
unknown
をNAに置き換える場合はunknownToNA()
関数を利用する
unknownToNA(x = xNum, unknown=6)
[1] 0 NA 0 7 8 9 NA
dNum <- data.frame( a = c(1, 3, "unknown"), b = c(4, 5, NA) )
データフレームに対しても利用できる。
isUnknown(x = dNum, unknown = NA)
a b 1 FALSE FALSE 2 FALSE FALSE 3 FALSE TRUE
NAToUnknown(x = dNum, unknown = 999)
a b 1 1 4 2 3 5 3 unknown 999
unknownToNA(dNum, unknown = c("unknown"))
a b 1 1 4 2 3 5 3 <NA> NA