2017-08-29 12 views
0

こんにちは私は私のデータセットのトレーニングデータ[1]の列を正規化したいと思います。この列の型はnumです。しかし、以下のコードを実行すると、それは私のすべてのNAを与えました、それは私のデータセットにNAがあるからです、そして、それを無視するためにlapplyにどのように伝えることができますか?lapply ign NA NA

normalize <- function(x) { 
    return ((x - min(x))/(max(x) - min(x))) 
} 

trainingData[1] <- as.data.frame(lapply(trainingData[1], normalize)) 

ありがとうございます!

+0

あなたが設定 '分()'と 'MAX()'関数を呼び出すことができます引数 'na.rm = TRUE'です。例: 'min(c(NA、2:4)、na.rm = TRUE)' –

答えて

1

することはあなたがあなたのnormalize()機能へのへis.na()フィルタに構築することができ、この

normalize <- function(x) { 
        return ((x - min(x,na.rm=T))/(max(x,na.rm=T) - min(x,na.rm=T))) 
       } 
+0

これは機能します!ありがとうございました! –

+0

あなたの歓迎、もしあなたが答えを受け入れるならば –

1

をお試しください:

normalize <- function(x) { 
    #first option 
    x <- x[!is.na(x)] 
    #second option 
    #x <- na.omit(x) 
    return ((x - min(x))/(max(x) - min(x))) 
} 
+0

これらの2つの間に違いはありますか? –

+0

ご利用の場合、いいえ。しかし、データフレームをサブセット化することで調整上の問題が生じることがあります。ここには良い説明があります:https://stackoverflow.com/questions/21493447/what-is-the-difference-between-na-omit-and-is-na –

+0

ありがとうございます。 Btw、私のモデルの精度は、機能のスケーリングの後に、これは可能ですか? –