私は、名前column.Itの値に基づいてデータのサブセットを取る関数を記述しました。列 "mark"の外れ値を計算し、すべての外れ値を置き換えます。 しかし、これらの異なるサブセットを結合しようとすると、要素の順序が変わります。rでbyとrbind関数を使用するときに行の要素の順序を維持する方法はありますか?
name mark
A 100.0
B 0.5
C 100.0
A 50.0
B 90.0
B 1000.0
C 1200.0
C 5000.0
A 210.0
私が書かれている機能は次のとおりです:
data.frame(do.call("rbind", as.list(by(data, data$name,
function(x){apply(x[, .(mark)],2,
function(y) {y[y > (quantile(x$mark, na.rm=TRUE)[[3]][[1]] + 1.5 * IQR(x$mark))]
<- (quantile(x$mark, na.rm=TRUE)[[3]][[1]] + 1.5 * IQR(x$mark));y})}))))
私はコラム「マーク」で私の要素の順序を維持することが可能な任意の方法は、私のデータセットがある
あります
上記の関数の結果は、下の最初の列です(図の目的で手動でname
を追加しました)。
mark NAME
100.000 ----- A
50.000 ----- A
210.000 ----- A
0.500 ----- B
90.000 ----- B
839.625 ----- B
100.000 ----- C
1200.000 ----- C
4875.000 ----- C
上記の結果では、マーク列の値の順序が変更されています。要素の順序を維持する方法はありますか?
なぜあなたは '内apply'必要がありますか? – HubertL