1
上下限+/- 3 * IQRの範囲外のデータ点をNAに設定しようとしています。私が抱えている課題は、データのグループによってこれを行う方法です。関数 "by"のブール値出力を入力ベクトルに一致させる方法
例として、以下のデータセットには分割列と値列があります。各分割について、私は値の列の上位と下位の分位数とIQRを計算し、上の条件を満たす値列のデータ点をNAに設定する必要があります。私はNAにデータポイントを設定するために、「非公開に」と出力を使用
out <- by(
x$Value,
x$Split,
function(y)
y < (quantile(y, probs=c(.25, .75), na.rm = T)[1] - 3*IQR(y, na.rm = T)) |
y > (quantile(y, probs=c(.25, .75), na.rm = T)[2] + 3*IQR(y, na.rm = T)))
ザ:私はNAに設定する必要がある値を識別するための機能「によって」を使用している
x <- structure(list(Split = c(1L, 1L, 3L, 2L, 2L, 2L, 2L, 1L, 3L, 3L, 3L, 3L, 3L, 1L, 1L, 3L, 1L, 3L, 2L, 3L), Value = c(0.9, 0.9, 3.5, 2.2, 2.2, 2.2, 2.2, 0.9, 3.5, 3.5, 3.5, 1.1, 3.5, 0.9, 1.9, 3.4, 0.9, 3.5, 2.2, 3.5)), .Names = c("Split", "Value"), class = "data.frame", row.names = c(NA, -20L))
:
x$Value[unlist(out)] <- NA
これは機能しません。 Reasonは、 "by"出力とx $ Value列の異なるソートです。
両方の出力をどのように一致させ、対応する値をNAに設定するかに関する提案はありますか?
ありがとうございました。