2017-10-28 5 views
0

データフレーム内の範囲外のデータをNAで識別して置き換えるにはどうすればよいですか?データフレーム内の範囲外のデータをNAで識別して置き換えるにはどうすればよいですか?

現在、以下のコードを使用して、ボックスプロットを使用してアウトライヤーを特定し、次に範囲外のものを手動で決定します(たとえば、スケールは1〜4でデータポイントは負です)。

>boxplot(data$scale1, data = data) 
>outliers <- boxplot(cw$N, plot=FALSE)$out 
>outliers 
>data$scale1[data$scale1==-7.58] <- NA 

彼らすべてが範囲外であるために異なるカットオフポイントを持っているように私は手動で各変数のためにこれをやっているし、これを行うための簡単な方法がある場合、私は不思議でしたか?

おかげ

+0

データには傾向がありますか?データポイントがいくつかの特定のトレンドに従っている場合は、トレンドに適合し、トレンドからあまり離れているデータポイントをアウトライヤーとみなすことができます。 – Heikki

+0

カットオフをデータフレームに書き込んで、各変数に適用することができます。 @Heikki:私はこのアプローチが適切だろうシナリオは表示されません –

+0

ありがとう! @tobiasegli_teは私の後ろのように聞こえる、私はちょうど各変数が別のカットオフポイントを持っている場合、それを行う方法について確信していた、あなたはアドバイスを持っていますか? – Shep

答えて

0

ちょうどあなたが次のように行くことができるコメントは、次のとおりです。トビアスは、すでに指摘したように

# Make up some data 
data <- data.frame(scale1=(c(0,-1,2,4,3,2,1,1,8,5))) 

# Define scale min and max 
scale1.min <- 0 
scale1.max <- 4 

# Set NAs for Outliers 
data$scale1[data$scale1 < scale1.min | data$scale1 > scale1.max] <- NA 

は、あなたが簡単に複数の変数のためにこれを行うことができます。

# Again make up some data 
data <- data.frame(scale1=(c(0,-1,2,4,3,2,1,1,8,5))) 
data["scale2"] <- data$scale1 - 1 
data["scale3"] <- data$scale1 + 2 
data["scale4"] <- data$scale1 + 5 

# Define your cut off points 
scale.min <- c(0,-1,2,3) 
scale.max <- c(4,2,4,8) 

for(i in 1:length(scale.min)) 
{ 
    data[,i][data[,i] < scale.min[i] | data[,i] > scale.max[i]] <- NA 
} 

希望をそれは助ける。

関連する問題