R选择在特定日期之前发生的数据

Hil*_*ary 1 r

所以我有两个看起来像这样的数据集(表):

数据集A:

Email   Date    Action
aaaa    1/5/14  won
bbbb    2/10/14 won
cccc    1/14/14 won
dddd    3/3/14  won
eeee    4/19/14 won
Run Code Online (Sandbox Code Playgroud)

数据集B:

Email   Date    Action
aaaa    1/5/14  won
aaaa    1/6/14  call
aaaa    1/9/14  email
aaaa    1/20/14 email
bbbb    2/8/14  email
bbbb    2/9/14  email
bbbb    2/10/14 won
bbbb    2/11/14 callback
bbbb    2/12/14 email
bbbb    2/13/14 won
cccc    1/14/14 won
cccc    1/16/14 call
dddd    2/3/14  email
dddd    3/3/14  won
eeee    4/19/14 won
eeee    4/21/14 call
Run Code Online (Sandbox Code Playgroud)

我希望它看起来像这样:

Email   Date    Action
bbbb    2/8/14  email
bbbb    2/9/14  email
bbbb    2/10/14 won
dddd    2/3/14  email
dddd    3/3/14  won
Run Code Online (Sandbox Code Playgroud)

所以基本上,通过电子邮件,如果首先在Action列中出现"won",我想摆脱与该电子邮件相关的所有观察.但是,如果在给定电子邮件的第一个"获胜"观察之前还有其他操作,我希望保留数据(包括观察到"获胜"的行)以及之前发生的所有事情.数据集A包含每个电子邮件的第一个观察到的"赢".数据集B包含其他所有内容和所有胜利.

我尝试过使用sqldf,但它的工作并不完全正确.任何帮助是极大的赞赏.

Dav*_*urg 7

我不确定你需要的第一个数据是什么,这里data.table只是尝试使用你的第二个数据工作正常

library(data.table)
setDT(df2)[, if(Action[1L] != "won") .SD[seq_len(match("won", Action))], by = Email]
#    Email    Date Action
# 1:  bbbb  2/8/14  email
# 2:  bbbb  2/9/14  email
# 3:  bbbb 2/10/14    won
# 4:  dddd  2/3/14  email
# 5:  dddd  3/3/14    won
Run Code Online (Sandbox Code Playgroud)