気候データがあり、外れ値をNA
に置き換えようとしています。 私は外れ値を計算するための値の範囲があるので、boxplot(x)$out
を使用していません。特定の範囲の値を持つNAを外れ値に置き換えるには?
temp_range <- c(-15, 45)
wind_range <- c(0, 15)
humidity_range <- c(0, 100)
私のデータフレームは、(私は範囲に応じてNAに置き換えるべき値を強調した。)
のでtemp1
とtemp2
外れ値はNA
に交換する必要があります。この
のように見えますtemp_range
によれば、wind
の外れ値は、に従ってNA
に置き換えなければならない、最後にhumidity
のアウトライヤーをhumidity_range
に従ってNA
に置き換える必要があります。ここで
df <- read.csv2("http://pastebin.com/raw/vwqBu2M5", stringsAsFactors = FALSE)
df[,2:5] = apply(df[,2:5], 2, function(x) as.numeric(x))
#Ranges
temp_range <- c(-15, 45)
wind_range <- c(0, 15)
humidity_range <- c(0, 100)
#Function to detect outlier
in_interval <- function(x, interval){
stopifnot(length(interval) == 2L)
interval[1] <= x & x <= interval[2]
}
#Replace outliers according to temp_range
cols <- c('temp1', 'temp2')
df[, cols] <- lapply(df[, cols], function(x) {
x[in_interval(x, temp_range)==FALSE] <- NA
x
})
。私はそれを単純化する方法があるので、私は多くの繰り返しを避けることができますか?
最後に、cols <- c('wind')
と言うと、私は警告をスローし、全体を風の列に置き換えます。
Warning message:
In `[<-.data.frame`(`*tmp*`, , cols, value = list(23.88, 23.93, :
provided 10 variables to replace 1 variables
お勧めはありますか?
イメージを更新しました。結果は出力と同じように見えます。願わくばで最初と2番目の交換ラインを行うことは可能ですか?彼らは非常に似ていると私はちょうどサンプルを投稿した、私は 'temp_range'に基づいてより多くの列を持っているので、この交換ラインの量が増加し、私はより動的にそれをやりたいと思います。 –