如何将每周行转换为每日行

时间:2016-12-08 10:42:12

标签: r data.table

我有一个数据表,dt,看起来像

          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

我们可以看到价值是每天。我想将这些值转换为每日和日期列,以获得"每日日期"。因此,例如,dt的第6行应该替换为7行,其中date列应该是日期 2016-07-11直到2016-07-17,在值列中,对于每一行,它应该有213257除以7

2 个答案:

答案 0 :(得分:1)

这也有效:

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

答案 1 :(得分:0)

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

这也有效,但我最终得到了两列date,所以我想在此之前我应该​​将date列重命名为date_temp或其他内容。