2016-12-08 3 views
0

ich eine Datentabelle haben, dt, das sieht aus wiewie in täglich wöchentlich Zeilen konvertieren

  date   value 
1: 2016-06-06    0 
2: 2016-06-13    0 
3: 2016-06-20    0 
4: 2016-06-27    0 
5: 2016-07-04    0 
6: 2016-07-11  213257 
7: 2016-07-18  513123 
8: 2016-07-25  162171 
9: 2016-08-01  162171 
10: 2016-08-08  462171 
11: 2016-08-15    0 
12: 2016-08-22    0 
13: 2016-08-29    0 
14: 2016-09-05    0 
15: 2016-09-12    0 
16: 2016-09-19    0 
17: 2016-09-26    0 

Wie wir die Werte täglich sehen können. Ich möchte diese Werte in Tages- und Datumsspalte umwandeln, um das "tägliche Datum" zu haben. So sollte z. B. Zeile 6 von dt durch 7 Zeilen ersetzt werden, wobei in der Spalte date die Daten 2016-07-11 bis 2016-07-17 und in der Wertspalte für jede dieser Zeilen 213257 dividiert durch 7

stehen sollten
+0

alle Zeilen mit 'value' als 0 sollte erweitert werden ignoriert und nicht? –

+0

nein, sie sollten nicht ignoriert werden – quant

Antwort

0
dt <- dt[,.(date=ymd(seq.Date(from = as.Date(date),to = as.Date(date)+6, 
by= "day")), value=value/7),by="date"] 

Dies funktioniert auch, aber ich am Ende mit 2 Spalten namens date, so dass ich denke, bevor Sie dies tun, ich sollte die date Spalte date_temp oder etwas umbenennen.

1

Dies funktioniert auch:

dt[rep(1:nrow(dt),each=7)][,`:=`(date=date+seq_len(.N)-1,value=value/7),by=date] 
Verwandte Themen