我有一個包含一串值的數據框,其中包含某些我想識別的異常讀數。我想在我的數據框中創建第三欄,標記某些讀數爲「異常」,其餘爲「正常」。回顧一下我的數據情況,當我看到這些奇怪的下跌時,看起來很明顯,但我無法弄清楚如何讓R識別奇數讀數,因爲基線平均值隨時間變化。我能想出的最好的方法是使用三條規則將某些事情歸類爲「異常」。使用R識別數據集中的異常讀數
1:從第二個值開始,如果第二個值在第一個值的接近範圍內,則在第三個列中標記爲「N」。通過其餘的數據集繼續。 2:如果第二個值表示從第一個值開始的較大增加或減少,則在第三個列中將異常標記爲「A」。 3:如果一個值被標記爲「A」,那麼下面的值也會被標記爲「A」,如果它在先前的異常值的小範圍內。如果以下值表示與之前的異常值相比有較大的增加或減少,則將其標記爲「N」。
這是我可以想出來的最好的邏輯,但是看看下面的數據,如果你能想出一個更好的主意我就是爲了它。
所以給僞數據組:
SampleNum<-1:50
Value <- c(1, 2, 2, 2, 23, 22, 2, 3, 2, -23, -23, 4, 4, 5, 5, 25, 24,
6, 7, 6, 35, 38, 20, 21, 22, -22, 2, 2, 6, 7, 7, 6, 30, 31,
6, 6, 6, 5, 22, 22, 4, 5, 4, 5, 30, 39, 18, 18, 19, 18)
DF<-data.frame(SampleNum,Value)
這是我怎麼可能會看到最終的數據,與第三列識別哪些值異常。
SampleNum Value Name
1 1 N
2 2 N
3 2 N
4 2 N
5 23 A
6 22 A
7 2 N
8 3 N
9 2 N
10 -23 A
11 -23 A
12 4 N
13 4 N
14 5 N
15 5 N
16 25 A
17 24 A
18 6 N
19 7 N
20 6 N
21 35 A
22 38 A
23 20 N
24 21 N
25 22 N
26 -22 A
27 2 N
28 2 N
29 6 N
30 7 N
31 7 N
32 6 N
33 30 A
34 31 A
35 6 N
36 6 N
37 6 N
38 5 N
39 22 A
40 22 A
41 4 N
42 5 N
43 4 N
44 5 N
45 30 A
46 39 A
47 18 N
48 18 N
49 19 N
50 18 N
按照你的規則,第2行應該是一個異常,因爲值2代表(至少)從1增加/減少50%(即增加100%) – jbaums
你是對的,也許%增加或減少不是最好的表徵數據中大跳躍的方式。編輯問題以刪除對% – Vinterwoo