在R中,假设我有365个非负整数的向量。由此,我想生成2015/1/1和2015/12/31之间的日期向量。一天将在新向量中列出k
次,其中k
是第一个向量中的对应数字。即k
是第一个向量的元素i
,其中日期是一年中的i
天。
例如,如果第一个向量是
c(1, 0, 2, ..., 2)
那么第二个矢量应该是
c(2015/1/1, 2015/1/3, 2015/1/3, ..., 2015/12/31, 2015/12/31)
有没有办法创建第二个向量作为一个整体,而不是逐行? (我当然可以弄清楚如何逐行。)
答案 0 :(得分:3)
我们可以使用rep
函数以及seq.Date
来执行此操作:
创建数据
set.seed(123)
kvec <- sample(0:10, 365, replace = T) #create the nonnegative integers
#create sequence of dates
date_vec <- seq.Date(from = as.Date('2015-01-01'), to = as.Date('2015-12-31'), by = 'day')
使用rep()
#let rep() do the work
k_date_vec <- rep(date_vec, times = kvec)
<强>结果强>
head(kvec)
[1] 3 8 4 9 10 0
head(k_date_vec)
[1] "2015-01-01" "2015-01-01" "2015-01-01" "2015-01-02" "2015-01-02" "2015-01-02"