2016-07-28 14 views
0

In R nehme ich an, dass ein Vektor aus 365 nichtnegativen ganzen Zahlen besteht. Daraus möchte ich einen Datenvektor zwischen dem 01.01.2015 und dem 31.12.2015 generieren. Ein Tag wird in dem neuen Vektor k Mal aufgeführt, wobei k die entsprechende Nummer in dem ersten Vektor ist. Das ist k ist Element i des ersten Vektors, in dem das Datum der i th-Tag des Jahres ist.Erstellen Sie einen Vektor mit der Nummer jedes Elementtyps, der durch einen anderen Vektor bestimmt wird

Zum Beispiel, wenn der erste Vektor

c(1, 0, 2, ..., 2) 

dann der zweite Vektor sein sollte

ist
c(2015/1/1, 2015/1/3, 2015/1/3, ..., 2015/12/31, 2015/12/31) 

Gibt es eine Möglichkeit, diesen zweiten Vektor als Ganze zu schaffen, anstatt zu Zeile für Zeile ? (Ich kann auf jeden Fall herausfinden, wie es Zeile-für-Zeile zu tun.)

+0

Und für sich wiederholende Reihen eines Datenrahmens: http://stackoverflow.com/q/2894775/ – Frank

Antwort

3

Wir haben die rep Funktion nutzen zu können sowie seq.Date dies zu tun:

Erstellen von Daten

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') 

Verwenden rep()

#let rep() do the work 
k_date_vec <- rep(date_vec, times = kvec) 

Ergebnis

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"