您好我想根据数据表中的值选择一组值。
具体来说,我想为 e == 1 的所有正值选择按日期和 id 分组的所有列
id date e logret
7 2011-07-29 1 -0.0272275211
7 2011-07-29 2 0.0034229025
7 2011-07-29 3 0.0042622177
8 2011-07-29 1 0.0035662770
8 2011-07-29 2 -0.0015268474
8 2011-07-29 3 0.0013333333
7 2011-07-30 1 0.0044444444
7 2011-07-30 2 -0.0001111111
7 2011-07-30 3 0.0013333333
这里将选择 id 8 和日期 2011-07-29 的所有元素以及日期 2011-07-30 的 id 7 的所有元素,因为 e == 1 的 logret > 0 其中 id 7 的所有元素在 2011- 07-29 被忽略,因为第一个 logret(其中 e==1)<0
答:
8 2011-07-29 1 0.0035662770
8 2011-07-29 2 -0.0015268474
8 2011-07-29 3 0.0013333333
7 2011-07-30 1 0.0044444444
7 2011-07-30 2 -0.0001111111
7 2011-07-30 3 0.0013333333
在 sql 中,我会使用某种子选择来实现这一点。我会 :
1) Select the id and date where e=1 and logret > 0
2) Select * join on results of subselect
我认为 data.table 也可以做到这一点,但我发现用 data.table 术语表达它很棘手。具体来说,我可以复制第 1 步,但不能在第 2 步中执行连接部分。
pos <- DT[e==1][logret > 0]
但无法将 pos 值重新加入我的 DT