R 更改缺少值的行类型(第三个变量)

R 更改缺少值的行类型(第三个变量),r,ggplot2,line,R,Ggplot2,Line,我试了这么久,但还是不知道怎么做。我有一个数据框: year <- c(1995:2012) salary <- c(702, 873, 1061, 1239, 1706, 1923, 2061, 2133, 2201, 2289, 2380, 2477, 2691, 2943, 3102, 3324, 3399, 3521) miss <- c(0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) df.salary &l

我试了这么久,但还是不知道怎么做。我有一个数据框:

year <- c(1995:2012)
salary <- c(702, 873, 1061, 1239, 1706, 1923, 2061, 2133, 2201, 2289, 2380, 2477, 2691, 2943, 3102, 3324, 3399, 3521)
miss <- c(0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
df.salary <- data.frame(year, salary, miss)
可变未命中意味着两个值(1998年和1999年缺失,仅对其进行评估)。我想用缺失年份之间的虚线在我的图中指出这一点。 我希望我的情节看起来像:


我怎么做?谢谢你的帮助

您可以修改data.frame以具有段标签:

toExtend <- function(x) c(diff(x),0)==1 |  c(0,diff(df.salary$miss))==-1
df.salary <- df.salary[rep(1:nrow(df.salary), times=ifelse(toExtend(df.salary$miss), 2, 1)),]
df.salary$miss[toExtend(df.salary$miss)] <- 1
df.salary$seg <- cumsum(c(0, diff(df.salary$miss)!=0))

您可能需要复制data.frame中的行以相互扩展段-不清楚是否要向外扩展
miss=1
部分,向内扩展
miss=0
部分,或者将每个段向左或向右扩展,但这样做应该相当简单——如果看不到如何弥补差距,请对如何弥补差距发表评论。

是的,我想展开
miss=1
,因此虚线应该更长。好的,我成功了:)谢谢!我添加了代码,这样我们就可以找到哪些行是非缺失的,但又是缺失的。它们被复制,而被复制的将其丢失设置为1
toExtend <- function(x) c(diff(x),0)==1 |  c(0,diff(df.salary$miss))==-1
df.salary <- df.salary[rep(1:nrow(df.salary), times=ifelse(toExtend(df.salary$miss), 2, 1)),]
df.salary$miss[toExtend(df.salary$miss)] <- 1
df.salary$seg <- cumsum(c(0, diff(df.salary$miss)!=0))
aes(year, salary, group=as.factor(seg), lty=as.factor(miss))