Hi All, I've a couple of questions i've been struggling with using the time features, can anyone help? sample data Timestamp user_id 27/05/08 22:57 763830873067 27/05/08 23:00 763830873067 27/05/08 23:01 763830873067 27/05/08 23:01 763830873067 05/06/08 11:34 763830873067 29/05/08 23:08 765253440317 29/05/08 23:06 765253440317 29/05/08 22:52 765253440317 29/05/08 22:52 765253440317 29/05/08 23:04 765253440317 27/06/08 19:34 765253440317 09/07/08 15:45 765329002557 06/07/08 19:24 765329002557 09/07/08 15:46 765329002557 07/07/08 13:05 765329002557 16/05/08 22:40 765329002557 08/06/08 11:24 765329002557 08/06/08 12:33 765329002557 My first question is how can i create a new var creating a filter based on a date? I've tried as.POSIXct.strptime below as well but to no avail.. can anyone give any advice?>Mcookie$timestamp <- as.POSIXct(strptime(Mcookie$timestamp,"%m/%d/%Y%H:%M"))>Mcookie$time <- ifelse(Mcookie$timestamp >strptime("07-08-2008-00:00","%m-%d-%Y-%H:%M",1,0) My second questions refers to finding the time difference in seconds between the first time a user sees something Vs the last.. and engagment time essentially, i see there is the difftime function, is there a more elegant way of working this out then my thoughts (Pysdo code below) sort data by user_id and Timestamp take the head of user_id as new_time_var take the tail of user_id as new_time_var2 use difftime(new_time_var, new_time_var2, units="secs") Mike [[alternative HTML version deleted]]
Is this what you want:> x.dftimestamp id 1 2008-05-27 22:57:00 763830873067 2 2008-05-27 23:00:00 763830873067 3 2008-05-27 23:01:00 763830873067 4 2008-05-27 23:01:00 763830873067 5 2008-06-05 11:34:00 763830873067 6 2008-05-29 23:08:00 765253440317 7 2008-05-29 23:06:00 765253440317 8 2008-05-29 22:52:00 765253440317 9 2008-05-29 22:52:00 765253440317 10 2008-05-29 23:04:00 765253440317 11 2008-06-27 19:34:00 765253440317 12 2008-07-09 15:45:00 765329002557 13 2008-07-06 19:24:00 765329002557 14 2008-07-09 15:46:00 765329002557 15 2008-07-07 13:05:00 765329002557 16 2008-05-16 22:40:00 765329002557 17 2008-06-08 11:24:00 765329002557 18 2008-06-08 12:33:00 765329002557> x.df$time <- ifelse(x.df$timestamp > as.POSIXct("2008-07-01"), 1, 0) > x.dftimestamp id time 1 2008-05-27 22:57:00 763830873067 0 2 2008-05-27 23:00:00 763830873067 0 3 2008-05-27 23:01:00 763830873067 0 4 2008-05-27 23:01:00 763830873067 0 5 2008-06-05 11:34:00 763830873067 0 6 2008-05-29 23:08:00 765253440317 0 7 2008-05-29 23:06:00 765253440317 0 8 2008-05-29 22:52:00 765253440317 0 9 2008-05-29 22:52:00 765253440317 0 10 2008-05-29 23:04:00 765253440317 0 11 2008-06-27 19:34:00 765253440317 0 12 2008-07-09 15:45:00 765329002557 1 13 2008-07-06 19:24:00 765329002557 1 14 2008-07-09 15:46:00 765329002557 1 15 2008-07-07 13:05:00 765329002557 1 16 2008-05-16 22:40:00 765329002557 0 17 2008-06-08 11:24:00 765329002557 0 18 2008-06-08 12:33:00 765329002557 0> # time difference by id > sapply(split(x.df$timestamp, x.df$id), function(.time){+ difftime(max(.time), min(.time), units='secs') + }) 763830873067 765253440317 765329002557 736620 2493720 4640760> >On Mon, Oct 13, 2008 at 6:57 AM, Michael Pearmain <mpearmain at google.com> wrote:> Hi All, > I've a couple of questions i've been struggling with using the time > features, can anyone help? sample data > > Timestamp user_id > 27/05/08 22:57 763830873067 27/05/08 23:00 763830873067 27/05/08 23:01 > 763830873067 27/05/08 23:01 763830873067 05/06/08 11:34 763830873067 > 29/05/08 > 23:08 765253440317 29/05/08 23:06 765253440317 29/05/08 22:52 > 765253440317 29/05/08 > 22:52 765253440317 29/05/08 23:04 765253440317 27/06/08 19:34 > 765253440317 09/07/08 > 15:45 765329002557 06/07/08 19:24 765329002557 09/07/08 15:46 > 765329002557 07/07/08 > 13:05 765329002557 16/05/08 22:40 765329002557 08/06/08 11:24 > 765329002557 08/06/08 > 12:33 765329002557 > > My first question is how can i create a new var creating a filter based on a > date? > > I've tried as.POSIXct.strptime below as well but to no avail.. can anyone > give any advice? > >>Mcookie$timestamp <- as.POSIXct(strptime(Mcookie$timestamp,"%m/%d/%Y > %H:%M")) >>Mcookie$time <- ifelse(Mcookie$timestamp > > strptime("07-08-2008-00:00","%m-%d-%Y-%H:%M",1,0) > > My second questions refers to finding the time difference in seconds between > the first time a user sees something Vs the last.. and engagment time > essentially, > i see there is the difftime function, is there a more elegant way of > working this out then my thoughts (Pysdo code below) > > sort data by user_id and Timestamp > take the head of user_id as new_time_var > take the tail of user_id as new_time_var2 > use difftime(new_time_var, new_time_var2, units="secs") > > Mike > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >-- Jim Holtman Cincinnati, OH +1 513 646 9390 What is the problem that you are trying to solve?
Try this: x$Timestamp <- as.POSIXct(strptime(as.character(x$Timestamp), "%d/%m/%y %H:%M")) x$time <- as.numeric(x$Timestamp > as.POSIXct(strptime("07-08-2008 00:00", "%d-%m-%Y %H:%M"))) with(x, tapply(Timestamp, user_id, function(x)diff(range(x), units="secs"), simplify = F)) On Mon, Oct 13, 2008 at 7:57 AM, Michael Pearmain <mpearmain@google.com>wrote:> Hi All, > I've a couple of questions i've been struggling with using the time > features, can anyone help? sample data > > Timestamp user_id > 27/05/08 22:57 763830873067 27/05/08 23:00 763830873067 27/05/08 23:01 > 763830873067 27/05/08 23:01 763830873067 05/06/08 11:34 763830873067 > 29/05/08 > 23:08 765253440317 29/05/08 23:06 765253440317 29/05/08 22:52 > 765253440317 29/05/08 > 22:52 765253440317 29/05/08 23:04 765253440317 27/06/08 19:34 > 765253440317 09/07/08 > 15:45 765329002557 06/07/08 19:24 765329002557 09/07/08 15:46 > 765329002557 07/07/08 > 13:05 765329002557 16/05/08 22:40 765329002557 08/06/08 11:24 > 765329002557 08/06/08 > 12:33 765329002557 > > My first question is how can i create a new var creating a filter based on > a > date? > > I've tried as.POSIXct.strptime below as well but to no avail.. can anyone > give any advice? > > >Mcookie$timestamp <- as.POSIXct(strptime(Mcookie$timestamp,"%m/%d/%Y > %H:%M")) > >Mcookie$time <- ifelse(Mcookie$timestamp > > strptime("07-08-2008-00:00","%m-%d-%Y-%H:%M",1,0) > > My second questions refers to finding the time difference in seconds > between > the first time a user sees something Vs the last.. and engagment time > essentially, > i see there is the difftime function, is there a more elegant way of > working this out then my thoughts (Pysdo code below) > > sort data by user_id and Timestamp > take the head of user_id as new_time_var > take the tail of user_id as new_time_var2 > use difftime(new_time_var, new_time_var2, units="secs") > > Mike > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >-- Henrique Dallazuanna Curitiba-Paraná-Brasil 25° 25' 40" S 49° 16' 22" O [[alternative HTML version deleted]]