我有一个数据表,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
答案 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
或其他内容。