如何根据日期范围在数据框中创建列?

时间:2019-01-16 11:18:28

标签: r

我有一个日期范围:

start_date <- "2019-01-01"
end_date <- "2019-01-05"

range <- seq(as.Date(start_date), as.Date(end_date), by = 1)

还有一个空的数据框:

output <- data.frame()

如何根据日期范围在数据框中创建新列,每一列代表该日期中的一天?

期望的结果是这样(值仅为0,仅出于示例目的):

   2018.01.01  2018.01.02  2018.01.03  2018.01.04  2018.01.05
1           0           0           0           0           0
2           0           0           0           0           0
3           0           0           0           0           0
4           0           0           0           0           0
5           0           0           0           0           0

我原以为这样的事情可能有用,但事实并非如此:

for(i in range){
  output$i <- i
}

我要去哪里错了?

1 个答案:

答案 0 :(得分:0)

一个选项是replicate

l1 <- length(range)
setNames(data.frame(replicate(l1, data.frame(col1 = rep(0, l1)))), range)

或使用rep

data.frame(setNames(rep(list(rep(0, l1)), l1), range), check.names = FALSE)

或使用matrix路线

as.data.frame( matrix(0, l1, l1, dimnames = list(NULL, 
           as.character(range))), check.names = FALSE)