你好,我想选择数据表中按日期和id分组的所有正值列,其中条件是e == 1。
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的元素,以及所有id为7且日期为2011-07-30的元素,因为其中e等于1时的logret>0。而所有在2011-07-29日期中id为7的元素则被忽略,因为第一个e等于1时的logret<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中。
data.table
包,但是我已经为你所指出的限制添加了一个临时可能的解决方案。如果您更喜欢那种格式,也很容易将其放回到单个数据框中。 - A5C1D2H2I1M1N2O1R2T1