R - 绘制缺少 NA 值的线

pan*_*ach 3 plot r missing-data na

我有以下 data.frame,“子集”

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
Run Code Online (Sandbox Code Playgroud)

我想要一个图,其中“时间”是x轴,“A”是一条线,“B”和“C”是点。

然而,当我绘制此图时,“A”出现的唯一一条线是连接最后 2 个点(45 和 46)的线,因为这是“A”中唯一的 2 个连续值。该图忽略“A”值之间的 NA,而不是通过 NA 连接这些值的线。为此,我使用以下代码:

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)
Run Code Online (Sandbox Code Playgroud)

我尝试过诸如 na.omit() 或 na.approx() 之类的解决方案,但是这些解决方案似乎只有在我在独立图中单独绘制“A”时才有效,它们似乎不能与“Time”一起使用”以及“B”和“C”都在同一个情节中。

Mat*_*ers 5

您可以使用索引而不是na.omit(): ,这样的事情应该可以做到:

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)
Run Code Online (Sandbox Code Playgroud)