我有一个日期向量:
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
答案 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