2017-06-01 3 views
0

Ich habe diesen Datensatz:Wie entfernen Sie die Ausreißer aus dem Datenrahmen?

dput(head(data,20)) 
structure(list(Date = structure(c(1495722600, 1495723500, 1495724400, 
1495725300, 1495726200, 1495727100, 1495728000, 1495728900, 1495729800, 
1495730700, 1495731600, 1495732500, 1495733400, 1495734300, 1495735200, 
1495736100, 1495737000, 1495737900, 1495738800, 1495739700), class = c("POSIXct", 
"POSIXt"), tzone = ""), JVM_CPU = c(1.07500004768372, 1.75, 10.6979999542236, 
2.40000009536743, 2.42400002479553, 5.80000019073486, 6.80000019073486, 
1.85000002384186, 8.52499961853027, 0.800000011920929, 12.7740001678467, 
0.174999997019768, 0.499000012874603, 0.248999997973442, 6.82499980926514, 
1.125, 0.949000000953674, 0.874000012874603, 6.55000019073486, 
0.248999997973442)), .Names = c("Date", "JVM_CPU"), row.names = c(NA, 
-20L), class = c("tbl_df", "tbl", "data.frame")) 

Ich muß das Teilmenge so eingestellt, dass sie nicht den Ausreißer haben:

ich das tun kann, den Ausreißer aus diesem zu entfernen: Daten $ JVM_CPU:

aber ich muss die Ausreißer aus diesem Datenrahmen Daten entfernen. Irgendwelche Ideen, wie ich das machen könnte?

Antwort

1

Sie können zuerst identifizieren, welche Zeilen Sie in Ihrem df behalten möchten (d. H. Keine Ausreißer), und dann den logischen Vektor verwenden, um Ihren df zu unterteilen.

keep <- !data_cpu$JVM_CPU %in% boxplot.stats(data_cpu$JVM_CPU)$out 
data_cpu[keep, ] 
1

Verwenden Sie, um die Zeilen zu indizieren und diese Zeilen zu entfernen.

Oder Ihr Beispiel gibt die TRUE FALSE zurück, wo die Zeilen beibehalten werden sollen, also können Sie sie einfach verwenden.

data_cpu[!data_cpu$JVM_CPU %in% boxplot.stats(data_cpu$JVM_CPU)$out, ] 
Verwandte Themen