2014-02-09 3 views
3

Я большой data.table, который выглядит какR, как вырастить data.table

custid, dayofweek, revenue 
AA 2 345 
AA 3 545 
BB 1 544 
BB 4 456 
CC 7 231 

Я хотел бы «вырастить» в этой таблице данные таким образом, что она имеет все 7 чисел для каждого CustID с столбец доходов установлен в NA. Пример, показанный ниже.

custid, dayofweek, revenue 
AA 1 NA 
AA 2 345 
AA 3 545 
AA 4 NA 
AA 5 NA 
AA 6 NA 
AA 7 NA 
BB 1 544 
BB 2 NA 
BB 3 NA 
BB 4 456 
BB 5 NA 
BB 6 NA 
BB 7 NA 
CC 1 NA 
CC 2 NA 
CC 3 NA 
CC 4 NA 
CC 5 NA 
CC 6 NA 
CC 7 231 

Выращивание этого способа, безусловно, не является совместным действием. Любая помощь оценивается. Заранее спасибо.

ответ

8
setkey(dt, custid, dayofweek) 
dt[CJ(unique(custid), 1:7)] 
# custid dayofweek revenue 
# 1:  AA   1  NA 
# 2:  AA   2  345 
# 3:  AA   3  545 
# 4:  AA   4  NA 
# 5:  AA   5  NA 
# 6:  AA   6  NA 
# 7:  AA   7  NA 
# 8:  BB   1  544 
# 9:  BB   2  NA 
#10:  BB   3  NA 
#11:  BB   4  456 
#12:  BB   5  NA 
#13:  BB   6  NA 
#14:  BB   7  NA 
#15:  CC   1  NA 
#16:  CC   2  NA 
#17:  CC   3  NA 
#18:  CC   4  NA 
#19:  CC   5  NA 
#20:  CC   6  NA 
#21:  CC   7  231 
# custid dayofweek revenue