2017-03-10 16 views
1

に置き換えます。ベクトルの値をR

Rのベクトルの特定の値(外れ値)をベクトル平均で置き換える必要があります(この場合、他の1つの提案は分かります)。私はR関数を使って "置き換える"ことを望みますが、私はまだ初心者です。自分で修正できないエラーが発生しています。これは - 私がしようとするものである:

replace(data$students, outlier, mean(data&students)) 

誰かが私は式のため&を使用can`t別のポストに私に言ったので、おそらく問題that'sが、同時にこれは誤りであるI' m:

invalid subscriptor type 'list' 

これは、置換機能を入力する前にリストを作成する必要があることを意味しますか?私は何を入力する必要がありますか?

申し訳ありませんが基本的な情報については、私はRで始まったばかりです。ありがとうございました。その後、

+0

'data $'の代わりに 'data&'を使用しました。また、 'replace'のsecnd引数は、論理インデックスまたは数値インデックスでなければなりません。 「外れ値」が – akrun

+0

であることは明確ではありません&は打ち間違いでした。私は正しくコード内でそれをやった:-)。問題は外れ値にある可能性があります。私は外れ値を持っている - dplyr :: filter(data、data $ students> 2000)とそれは数値と文字列のベクトルを返す....リスト? '外れ値'に関しては – albert

+0

であり、それは要素識別子でなければならない。すなわち、NA 'i1 < - (is.na(data $ students))を置き換える例として、置き換えてください(データ$ students、i1、mean(data $ students、na.rm = TRUE)) – akrun

答えて

2

外れ値の検出は2000以上の値に基づいている場合、

data$students <- with(data, replace(students, students > 2000, mean(students))) 

mean部分に関しては、meanがあまりにも外れ値の値をとるかどうかは明らかではありません。そうでない場合

i1 <- data$students >2000 
data$students <- with(data, replace(students, i1, mean(students[i1]))) 
+1

ありがとうございます!最初のアプローチでは、そうではないようです。最初のオプションがうまく動作します:-) – albert

関連する問題