创建日期数据框

时间:2018-08-10 00:26:42

标签: r date dataframe

我有一个日期向量:

dates <- seq(as.Date('2017-01-01'), as.Date('2017-12-31'), by = 'days')

我想创建一个数据帧,此向量重复n行。谁能告诉我我怎么能做到这一点?任何帮助将不胜感激。

感谢到目前为止的建议。不幸的是,我认为我的初衷在最初的问题中并不清楚。我希望数据框中的n行中的每一行都包含日期向量,以便最终数据框看起来像这样:

1  2017-01-01   2017-01-02.....2017-12-31
2  2017-01-01   2017-01-02.....2017-12-31
3  2017-01-01   2017-01-02.....2017-12-31
.
.
.    
n  2017-01-01   2017-01-02.....2017-12-31

3 个答案:

答案 0 :(得分:1)

您可以使用rep重复向量,然后强制转换为数据帧。例如,重复10次

num_repeat <- 10

dates <- data.frame(rep(
  seq(as.Date('2017-01-01'), as.Date('2017-12-31'), by = 'days'), 
  times = num_repeat))

答案 1 :(得分:0)

我们使用replicate来完成

n <- 5
out <- do.call(rbind, replicate(n, as.data.frame(as.list(dates)),
             simplify = FALSE)) 
names(out) <- paste0('V', seq_along(out))
dim(out)
#[1]   5 365

out[1:3, 1:3]
#        V1         V2         V3
#1 2017-01-01 2017-01-02 2017-01-03
#2 2017-01-01 2017-01-02 2017-01-03
#3 2017-01-01 2017-01-02 2017-01-03

out[1:3, 362:365]
#        V362       V363       V364       V365
#1 2017-12-28 2017-12-29 2017-12-30 2017-12-31
#2 2017-12-28 2017-12-29 2017-12-30 2017-12-31
#3 2017-12-28 2017-12-29 2017-12-30 2017-12-31

答案 2 :(得分:0)

由于提问者希望填充n行,所以指定length.out而不是times不是更有意义吗?

set.seed(1)

dtf <- data.frame(A=letters[sample(1:27, 1000, TRUE)])

dtf$B <- rep(dates, length.out=nrow(dtf))

tail(dtf)
#      A          B
# 995  d 2017-09-22
# 996  u 2017-09-23
# 997  r 2017-09-24
# 998  h 2017-09-25
# 999  f 2017-09-26
# 1000 h 2017-09-27