我試圖通過矢量來找到使用IQR計算範圍的異常值。當我運行這個腳本尋找IQR右側的值時,我得到了結果,當我向左運行時,出現錯誤:缺少值,其中TRUE/FALSE所需。我怎樣才能清除數據集中的真假? 這裏是我的腳本:在[R]中出錯 - 需要TRUE/FALSE的缺失值
data = c(100, 120, 121, 123, 125, 124, 123, 123, 123, 124, 125, 167, 180, 123, 156)
Q3 <- quantile(data, 0.75) ##gets the third quantile from the list of vectors
Q1 <- quantile(data, 0.25) ## gets the first quantile from the list of vectors
outliers_left <-(Q1-1.5*IQR(data))
outliers_right <-(Q3+1.5*IQR(data))
IQR <- IQR(data)
paste("the innner quantile range is", IQR)
Q1 # quantil at 0.25
Q3 # quantile at 0.75
# show the range of numbers we have
paste("your range is", outliers_left, "through", outliers_right, "to determine outliers")
# count ho many vectors there are and then we will pass this value into a loop to look for
# anything above and below the Q1-Q3 values
vectorCount <- sum(!is.na(data))
i <- 1
while(i < vectorCount){
i <- i + 1
x <- data[i]
# if(x < outliers_left) {print(x)} # uncomment this to run and test for the left
if(x > outliers_right) {print(x)}
}
,我得到的錯誤是
[1] 167
[1] 180
[1] 156
Error in if (x > outliers_right) { :
missing value where TRUE/FALSE needed
,你可以看到,如果您運行此腳本,它被發現在右邊我的3個外行,也引發錯誤,但是當我在IQR的左邊再次運行這個函數,並且向量中出現了100個異常值時,我只是得到錯誤而沒有顯示其他結果。 我該如何修復這個腳本?任何幫助不勝感激。我一直在網上和我的書上搜索如何解決這個問題。
'i = 16'發生錯誤。比較後切換'i <-i + 1'。 – liuminzhao
您正在切換該語句的位置,以便在比較後發生。 –
是的,謝謝,修好了! –