2013-06-05 3 views
0

Следующий код неR с помощью lubridate с data.table, чтобы соответствовать даты

a = data.table(date=seq(ymd('2001-6-30'),ymd('2003-6-30'),by='weeks')) 
a = a[,list(date=date,a=rnorm(105),b=rnorm(105))] 

b = seq(ymd('2001-6-30'),ymd('2001-07-28'),by='weeks') 

a[date %in% b] 

с сообщением

Empty data.table (0 rows) of 3 cols: date,a,b 

Может кто-нибудь помочь определить, что я делаю неправильно. Он должен найти данные.

+0

спасибо @ G.Grothendieck сделаю редактирования. –

ответ

5

Ничего общего с lubridate.

Ваша проблема связана с определением. У вас есть столбец b в вашей таблице данных. data.table будет выглядеть сначала в data.table, а затем вверх по пути поиска. Он не может сказать, вы хотите посмотреть на b в parent.frame

Итак, переименовать вектор в родительском (глобальной) среде

B <- b 
a[date %in% B] 

     date   a   b 
1: 2001-06-30 -1.89904968 0.9230171 
2: 2001-07-07 0.08599561 -0.0440927 
3: 2001-07-14 -0.28606686 0.4649957 
4: 2001-07-21 0.39191680 0.2907855 
5: 2001-07-28 0.18732463 -0.1743267 
+0

Потрясающе. Спасибо, мн. –

Смежные вопросы