2017-03-04 6 views
0

Ich habe folgende data.frame "Teilmenge"R - Plotten eine Linie mit NA fehlenden Werten

Time   A B C 
2016-10-07 06:16:46 NA NA 41 
2016-10-07 06:26:27 40 39 42 
2016-10-07 06:38:23 NA 40 NA 
2016-10-07 06:41:06 42 42 44 
2016-10-07 06:41:06 NA 42 44 
2016-10-07 06:41:06 NA 42 44 
2016-10-07 06:41:07 44 43 48 
2016-10-07 06:41:41 NA 43 48 
2016-10-07 06:42:44 45 42 48 
2016-10-07 06:48:40 46 45 48 

Ich mag ein Grundstück haben, wo "Time" ist die x-Achse, "A" ist eine Linie und "B" und "C" sind Punkte.

Wenn ich dies jedoch plotte, ist die einzige Linie, die für "A" erscheint, diejenige, die die letzten 2 Punkte verbindet (45 und 46), weil dies die einzigen 2 aufeinanderfolgenden Werte in "A" sind. Der Plot ignoriert die NA zwischen den Werten von "A", anstatt eine Linie einzubauen, die diese Werte durch die NAs verbindet. Dazu verwende ich den folgenden Code:

plot(subset$Time,subset$A,type="l",ylim=c(min(subset$B,na.rm=TRUE)-5,max(subset$C,na.rm=TRUE)+5),xlim=c(as.POSIXct(min(subset$Time)),as.POSIXct(max(subset$Time)))) 
lines(subset$Time,subset$B,type="p",col=27) 
lines(subset$Time,subset$C,type="p",col=134) 

Ich habe versucht, Lösungen wie na.omit() oder na.approx(), aber diese scheinen nur zu arbeiten, wenn ich würde plotten „A“ separat in ein eigenständiger Plot, scheinen sie nicht in Verbindung mit "Time" und "B" und "C" alle in der gleichen Handlung zu arbeiten.

Vielen Dank im Voraus.

Antwort

0

Sie könnten mit den Indizes arbeiten statt na.omit(): So etwas sollte es tun:

plot(subset$Time[!is.na(subset$A)],subset$A[!is.na(subset$A)],type="l") 
# with your xlim and ylim, of course 

lines(subset$Time,subset$B,type="p",col=27) 
lines(subset$Time,subset$C,type="p",col=134) 
+0

Vielen Dank, es hat funktioniert :) – panajach

0

Versuchen Sie folgendes:

xlim <- range(subset$Time) 
ylim <- range(subset[-1], na.rm = TRUE) 
plot(A ~ Time, na.omit(subset[1:2]), type = "l", xlim = xlim, ylim = ylim) 
points(B ~ Time, subset, col = 27) 
points(C ~ Time, subset, col = 134) 

Eine weitere Möglichkeit, die subset= Argument von plot, in denen verwenden Fall Wir ersetzen die obige Zeile plot durch:

ok <- ! is.na(subset$A) 
plot(A ~ Time, subset, subset = ok, type = "l", xlim = xlim, ylim = ylim) 

In jedem Fall werden wir diese Grafik erhalten:

screenshot

+0

Ihnen sehr für Ihre Hilfe danken, es funktionierte :) – panajach