For循环和序列函数创建日期列表的列表返回的列表比预期的短

时间:2019-06-12 13:50:51

标签: r

我正在使用for循环创建日期列表的列表,日期列表的日期从打开日期到关闭日期。我的问题是列表列表包含41个项目,而不是我需要的63个项目。逻辑似乎部分正确,但输出不完整。

我正在尝试在R中创建一个折线图,以显示某个时间点打开了多少信息安全事件。

我读取了带有数据的csv。从列中创建三个向量:日期事件已打开,日期事件已关闭(如果事件尚未关闭,请用今天的日期替换NA)和事件编号。我使用lubridate将两个日期向量格式化为日期。

我用这三个向量创建数据帧,并将行数作为变量n(在本例中为63)。我创建一个空列表,然后运行for循环以创建列表列表,列表中的每个项目都是从打开日期到关闭日期的日期序列。

我的问题是列表中包含41个项目,而不是我需要的63个项目。

library(lubridate)

读取事件注册表数据

incidents.data <- read.csv("incidents2019.csv")

#Create vector for columns that with data of incident open date, incident closed dates and incident number
incident.open <- dmy(incidents.data$Date.Reported.to.InfoSecGov..Day.B.)
incident.closed <- mdy(incidents.data$Closing.Date..Day.I.)
incident.number <- incidents.data$Incident.Num

在流程结束日期中没有任何NA被替换为今天。

incident.closed.full <- incident.closed %>% replace_na(as.Date        ("2019/6/12"))

创建包含日期的数据集

data <- data.frame(incident.number, incident.open, incident.closed.full)

n <- nrow(data)
mylist <- list()

for(i in 1:n){
  mylist[[i]] <- seq(as.Date(data$incident.open[i]), as.Date     (data$incident.closed.full[i]), "days")
}

d <- do.call("c", mylist)

df <- data.frame(table(d))

绘图数据

plot(df$d, df$Freq, main = "Information Security Incidents In Process",     xlab="Date", ylab="# of InfoSec Incidents in Process")
lines(df$Freq)

我收到此错误消息:

  

seq.int(0,to0-from,by)中的错误:“ by”参数中的错误登录

0 个答案:

没有答案