2017-03-10 82 views
1

全部中的向量中的值。替換R

我需要用向量平均值來替換R中向量中的特定值(異常值)(在這種情況下,其他建議將會被讚賞)。我想使用R函數「替換」來實現這一點,但我仍然是初學者,而且我收到了一個我自己無法修復的錯誤。這是我正嘗試:

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

有人告訴我在另一篇文章,我不能老是用&的公式,所以也許that's的問題,但在同一時間,這是錯誤I' m得到:

invalid subscriptor type 'list' 

這意味着我必須創建一個列表才能輸入替換功能?我應該輸入什麼?

對不起,基本信息,但我剛剛開始與R.非常感謝您的好迴應。

+0

您已經使用'data&'而不是'data $'。另外'replace'中的secnd參數應該是邏輯或數字索引。目前還不清楚'outlier'是什麼 – akrun

+0

&是一個錯字。我在我的代碼中正確做到了:-)。問題可能出在異常。我有異常< - dplyr :: filter(data,data $ students> 2000),它返回一個包含數字和字符串的向量....一個列表? – albert

+0

關於'outlier',它應該是一個元素標識符。即作爲一個例子來代替NA'i1 < - 哪個(是.na(數據$學生));替換(data $ 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