我正在尝试制作甘特图来捕获我将要分析的数据的时间覆盖率。我在 plotrix 中使用 gantt.chart。
这是我的数据:(id、开始日期、结束日期、优先级)
id <- c( "1993", "1993", "1993", "1994", "1994", "1994", "1995", "1995", "1995", "1995", "1995", "1996", "1996", "1996", "1997", "1998",
"1999", "2000", "2001", "2001", "2002", "2003", "2003", "2003", "2003", "2003", "2004", "2004", "2004", "2004", "2005", "2005",
"2006", "2007", "2008", "2009", "2010", "2011", "2012", "2013", "2014", "2015")
startdate <- c( "1993/09/25", "1993/12/02", "1994/04/16", "1993/12/02", "1993/12/03", "1994/03/10", "1993/09/27",
"1993/12/08", "1994/04/17", "1994/03/25", "1994/03/30", "1993/10/01", "1993/12/14", "1994/01/02",
"1993/11/09", "NA", "NA", "NA", "1994/04/23", "1994/04/09", "NA",
"1994/03/28", "1994/04/12", "1994/03/27", "1994/04/05", "1994/04/12", "1993/10/02", "1994/03/29",
"1994/04/15", "1994/04/21", "1993/09/19", "1994/04/17", "NA", "NA", "NA",
"NA", "NA", "NA", "NA", "1993/09/24", "1993/09/23", "1993/09/23")
enddate <- c("1993/10/04", "1993/12/14", "1994/05/21", "1993/12/06", "1993/12/17", "1994/04/05", "1993/10/16",
"1993/12/29", "1994/07/10", "1994/07/15", "1994/06/26", "1993/10/17", "1993/12/31", "1994/01/27",
"1994/04/17", "NA", "NA", "NA", "1994/08/10", "1994/05/12", "NA",
"1994/07/20", "1994/07/05", "1994/06/21", "1994/06/17", "1994/06/17", "1993/12/09", "1994/06/02",
"1994/06/02" ,"1994/05/27", "1994/01/15", "1994/06/04", "NA", "NA", "NA",
"NA", "NA", "NA", "NA", "1993/10/09", "1993/10/08", "1993/10/04")
prior <- c( 1 , 1, 1, 1 , 3, 3, 1 , 1, 1, 2, 2 , 1 , 1 , 1, 3, NA, NA, NA, 2, 3, NA, 1, 3, 1, 2, 3, 1,
1 , 2, 3 , 1 ,2 ,NA ,NA ,NA, NA, NA, NA, NA, 4, 4, 4)
这是我正在使用的代码:
Ymd.format<-"%Y/%m/%d"
gantt.info1 <-list(labels=id,
starts=as.POSIXct(strptime(startdate,
format=Ymd.format)),
ends=as.POSIXct(strptime(enddate,
format=Ymd.format)),
priorities=prior)
gantt.chart(x=gantt.info1,
format="Ymd.format",
taskcolors=rainbow,
priority.legend=TRUE,
vgridpos=NULL,
vgridlab=NULL,
vgrid.format= NULL,
half.height=0.25,
hgrid=FALSE,
main="Title",
xlab="months",
cylindrical=FALSE,
label.cex=1,
border.col=NA,
priority.label="Priorities",
time.axis=3)
这是我收到的错误消息:
if (any(x$starts > x$ends)) stop("Can't have a start date after an end date") 出错:需要 TRUE/FALSE 的地方缺少值
首先,我已经检查了三倍,我所有的日期都是有效的。我认为这可能是我使用时 NA 的问题
is.na(startdate)
它返回所有 FALSE 响应。所以我将所有 NA 值分配为“NA”
startdate[16] = NA
而且我还删除了所有 NA 并使用新数据运行它,但都没有工作,我收到相同的错误消息。
我敢肯定这是我没有想到的简单事情,但我花了几天时间试图解决这个问题,只需要帮助解决它。
非常感谢您的宝贵时间!