2017-07-11 3 views
-1

私はここで大きな問題を抱えています。私は本当に助けに感謝します。基本的に私はこのような大きなデータフレームを持っています。このRコードはターミナルにあり、Rスタジオではありません!データフレームの特定のニッチ内で異常値を計算しますか? [Complex]

!私は何をしようとしている[DATAFRAME] http://imgur.com/a/ftUZ5

は、ユニークなval_lvl2トリートメントによって独立したデータフレームです。

私がやりたがっているコードですが、はるかに大きなスケールです。

機能コード:

remove_outliers <- function(x, na.rm = TRUE, ...) { 
    qnt <- quantile(x, probs=c(.25, .75), na.rm = na.rm, ...) 
    H <- 1.5 * IQR(x, na.rm = na.rm) 
    y <- x 
    y[x < (qnt[1] - H)] <- NA 
    y[x > (qnt[2] + H)] <- NA 
    y 

} 

CODE:

holder1 <- subset(z_combined_cost_dtrmnt, val_lvl2 == "Hammer Toe Repair") 

holder1 <- holder1[!(holder1$episode_count <=3),] 

holder1$prd_num_of_days_num <- remove_outliers(holder1$prd_num_of_days_num) 

これは私がしたい正確に何であるval_lvl2でハンマートゥの修復のために外れ値の長さのすべてを削除します。しかし、私はかなりのいくつかのユニークな治療があるので、毎回この手順を実行したくない!すべての外れ値を削除した後、NA列も削除して、すべてのデータを1つのデータフレーム "z_combined_cost_dtrmnt"にマージする必要があります。これは、val_lvl2の一意の処理ごとにすべての外れ値を一意に削除する必要があります。この時点で、上記のコードは異常値を取り除いたものですが、私が肯定的であるために助けてくれれば大いに感謝します。これを行うより効率的な方法があります。ここで

はval_lvl2内のすべてのユニークな治療法です:![ユニークな値] http://imgur.com/237OqCs

答えて

0

あなたは

... val_lvl2のレベルによってデータフレームのリストを作成する

holders <- split(z_combined_cost_dtrmnt, z_combined_cost_dtrmnt$val_lvl2) 
splitを使用し、適用することができます lapplyを使用して、そのリストの各要素に必要な機能

holders <- lapply(holders, function(x) x[!x$episode_count <= 3,]) 
holders <- lapply(holders, function(x){ 
        x$prd_num_of_days_num <- remove_outliers(x$prd_num_of_days_num) 
        return(x) }) 

あなたは、データフレームのリスト、val_lvl2の各レベルのものとなってしまいます。

+0

私はそれがコマンドであることを知らなかった!ありがとうございました!その後、マージ(ホルダー)と同じくらい簡単ですか? – nazgulian

+0

これはまさに私が探していたものでした!どうもありがとうございます!!データを1つの大きなセットに戻す同様の問題に遭遇する人には、非常に簡単です! do.call関数を使うだけです。 私にとっては、このように見えました。 z_combined_cost_dtrmnt < - do.call(rbind、holders) – nazgulian

関連する問題