2015-11-04 28 views
1

我试图设置每个用户已打开哪些电子邮件的订单值。 基本上是一个脚本,用于为用户读取电子邮件时进行计数和设置。r中每个用户变量的唯一值的累积计数

Users Emails  Date_Sent Date_Opened Count 
user1 email a 01/1/2015 02/1/2015  1 
user1 email b 12/3/2015   
user1 email c 08/5/2015 10/5/2015  2 
user1 email d 04/6/2015 04/6/2015  3 
user1 email e 05/8/2015 05/8/2015  4 
user2 email b 06/1/2015   
user2 email c 07/1/2015 08/1/2015  1 
user2 email d 14/2/2015   

到目前为止,我已经试过这个代码

data$count <- with(data, ave(Emails, Users, 
        FUN = function(x) cumsum(!duplicated(x)))) 

它通过每用户计数的电子邮件。我仍然在想如何通过那些在Date_Opened字段中有数据的人来限制它。

有人可以帮我吗?

回答

0

尝试

library(data.table) 
setDT(df2)[Date_Opened!='',Count := 1:.N , Users] 

或者

setDT(df2)[Date_Opened !='', count:= cumsum(!duplicated(Emails)) , Users]