データにRが含まれていて、欠損データ用の特殊文字列が含まれています。私は 有効なデータとだけの1つにsubset
元のデータフレームにしたいと思います。因子レベルが数値か文字列かどうかを検出するR
次の例では、いくつかの数値と欠損データの2つの文字列(MD1
およびMD2
)があります。
DF <- data.frame(x = c(1, 2, 3, "MD1", 5, "MD2"))
わずか数このような文字列があった場合、私はそれらを列挙し、(これは私がそれをしたかではなく、それはシンプルだし、この質問の目的に合っ)のサブセットを抽出できます。
DF.invalid <- droplevels(subset(DF, x == "MD1" | x == "MD2"))
DF.valid <- subset(DF, x != "MD1" & x != "MD2")
DF.valid$x <- as.numeric(levels(DF.valid$x))[DF.valid$x]
私の問題は、欠落しているデータ文字列があらかじめわかっていない可能性があることです。 MD1
とMD2
が非数値であることを検出する適切な(エレガントな)方法があり、データフレームを検査して非数値レベルを列挙することなくこの結果を達成できますか?
'as.numeric(levels(df $ x)[df $ x])'を実行し、 'NA'になるものは非数値です。 –