Hi Arun,

this could to the work...

Thanks so much!


On Thu, Aug 29, 2013 at 3:10 PM, arun <[email protected]> wrote:

> HI,
> It's not really clear, but you can try this:
> dat1<- read.table(text="
> id module  event       time time_on_task Categ    url
>   1    sys  login 1373502892           80     B
> http://post/add?id=42&idp=45
>  2   task    add 1373502892           80     A
> http://post/add?id=33&idp=45
>  3   task    add 1373502972           23     A
> http://post/add?id=34&idp=45
>  4    sys  login 1373502892           80     B
> http://post/add?id=39&idp=42
>  5   list delete 1373502995          901     C
> http://post/add?id=37&idp=41
>  6   list   view 1373503896          100     D
> http://post/add?id=36&idp=46
>  7   task    add 1373503996           NA     A
> http://post/add?id=31&idp=45
> ",sep="",header=TRUE,stringsAsFactors=FALSE)
>
> vec1<-as.numeric(gsub(".*\\?.*=(\\d+)\\&.*","\\1",dat1$url[dat1$Categ=="A"]))
>  vec1
> #[1] 33 34 31
>
> dat2<- read.table(text="
> id idpost idtopic iduser
> 1   45      33       101
> 2   46      34       102
> 3   47      33       103
> 4   48      33       101
> 5   49      35       104
> ",sep="",header=TRUE)
>  dat1$Categ[dat1$Categ=="A"][!vec1%in%dat2$idtopic]<-"F"
>  dat1
> #  id module  event       time time_on_task Categ
> url
> #1  1    sys  login 1373502892           80     B
> http://post/add?id=42&idp=45
> #2  2   task    add 1373502892           80     A
> http://post/add?id=33&idp=45
> #3  3   task    add 1373502972           23     A
> http://post/add?id=34&idp=45
> #4  4    sys  login 1373502892           80     B
> http://post/add?id=39&idp=42
> #5  5   list delete 1373502995          901     C
> http://post/add?id=37&idp=41
> #6  6   list   view 1373503896          100     D
> http://post/add?id=36&idp=46
> #7  7   task    add 1373503996           NA     F
> http://post/add?id=31&idp=45
>
>
> A.K.
>
>
>
>
>
>
> ________________________________
> From: srecko joksimovic <[email protected]>
> To: arun <[email protected]>
> Sent: Thursday, August 29, 2013 5:38 PM
> Subject: Re: [R] Add new calculated column to data frame
>
>
>
> Hi Arun,
>
> I really appreciate your help, and we did a great job :)
> but, now I think that R can do anything, so I'd like to try one more
> thing, if you don't mind...
>
> from the table with categories,
>
> #  id module  event       time time_on_task Categ    url
> #1  1    sys  login 1373502892           80     B         http:
> #2  2   task    add 1373502892           80     A         http:
> #3  3   task    add 1373502972           23     A         http:
> #4  4    sys  login 1373502892           80     B          http:
> #5  5   list delete 1373502995          901     C
> #6  6   list   view 1373503896          100     D
> #7  7   task    add 1373503996           NA     A
>
>
> I'd like to use only certain category (for example A). Each of these
> fields has an url whose format is something like
> http://post/add?id=33&idp=45. First step would be to extract this id (33
> in this case). Based on that value, I want to find all "iduser" from the
> following table:
>
> id idpost idtopic iduser
> 1   45      33       101
> 2   46      34       102
>
> 3   47      33       103
>
> 4   48      33       101
>
> 5   49      35       104
>
>
> The next step would be to check if at least one of these values (iduser)
> is not in the vectors "users" (only ids). If that is the case, I want to
> change category to F, if not, I want to keep the same category.
>
> If this is too much for one question, I'll implement this in Java, but I'd
> really like to try this with R. Maybe this id extraction from url is the
> most important problem... I tried most of these steps, but still not able
> to put them all together...
>
> Thank you so much for your time.
> Srecko
>
>
>
>
>
>
>
>
> On Thu, Aug 29, 2013 at 12:22 PM, arun <[email protected]> wrote:
>
> Hi Srecko,
> >No problem.
> >
> >Arun
> >
> >
> >
> >
> >
> >
> >________________________________
> >From: srecko joksimovic <[email protected]>
> >To: arun <[email protected]>
> >Sent: Thursday, August 29, 2013 3:19 PM
> >
> >Subject: Re: [R] Add new calculated column to data frame
> >
> >
> >
> >This is great Arun, thank you again.
> >
> >I was thinking to use sqldf and issue query for each module-action
> combination, but this is much better. Since I have table with categories
> (module, action, category), I could create vector "levels" based on the
> first two columns and vector "labels" based on the category column and that
> should to the work...
> >
> >Best,
> >Srecko
> >
> >
> >
> >On Thu, Aug 29, 2013 at 12:16 PM, arun <[email protected]> wrote:
> >
> >Hi Srecko,
> >>
> >>You didn't mention the order in which the letters are assigned.  If you
> need a different order, just change the order in the ",levels=c(....),".
> >>Arun
> >>
> >>
> >>
> >>
> >>----- Original Message -----
> >>From: arun <[email protected]>
> >>To: srecko joksimovic <[email protected]>
> >>Cc: R help <[email protected]>
> >>
> >>Sent: Thursday, August 29, 2013 3:13 PM
> >>Subject: Re: [R] Add new calculated column to data frame
> >>
> >>
> >>
> >>Hi,
> >>You could try this:
> >>dat1<- read.table(text="
> >>id  module    event       time                       time_on_task
> >>1   sys         login         1373502892           80
> >>2   task        add          1373502892           80
> >>3   task        add          1373502972           23
> >>4   sys         login         1373502892           80
> >>5   list         delete       1373502995          901
> >>6   list          view         1373503896          100
> >>7   task        add          1373503996           NA
> >>",sep="",header=TRUE,stringsAsFactors=FALSE)
>
> >> dat1$Categ<-as.character(factor(with(dat1,paste(module,event,sep="_")),levels=c("task_add","sys_login","list_delete","list_view"),labels=LETTERS[1:4]))
> >>
> >>
> >>dat1
> >>#  id module  event       time time_on_task Categ
> >>#1  1    sys  login 1373502892           80     B
> >>#2  2   task    add 1373502892           80     A
> >>#3  3   task    add 1373502972           23     A
> >>#4  4    sys  login 1373502892           80     B
> >>#5  5   list delete 1373502995          901     C
> >>#6  6   list   view 1373503896          100     D
> >>#7  7   task    add 1373503996           NA     A
> >>A.K.
> >>
> >>________________________________
> >>From: srecko joksimovic <[email protected]>
> >>To: arun <[email protected]>
> >>Cc: R help <[email protected]>
> >>Sent: Thursday, August 29, 2013 2:34 PM
> >>Subject: Re: [R] Add new calculated column to data frame
> >>
> >>
> >>
> >>Hi Arun,
> >>
> >>There is one more question... you explained me how to
> use split(dat1,cumsum(dat1$action=="login")) in one of previous questions,
> and that is great.
> >>Now, if I have something like this:
> >>
> >>id  module    event       time                       time_on_task
> >>1   sys         login         1373502892           80
> >>2   task        add          1373502892           80
> >>
> >>3   task        add          1373502972           23
> >>4   sys         login         1373502892           80
> >>5   list         delete       1373502995          901
> >>6   list          view         1373503896          100
> >>7   task        add          1373503996           NA
> >>I know how to split at each "login" occurrence, and I know how to add
> new column with time differences. But, how to add new column "category"
> which will be calculated based on columns "module" and "even"? For example
> if module=task and event=add => category= A...
> >>
> >>Srecko
> >>
> >>
> >>
> >>
> >>
> >>On Thu, Aug 29, 2013 at 11:22 AM, arun <[email protected]> wrote:
> >>
> >>Hi Srecko,
> >>>No problem.
> >>>Regards,
> >>>Arun
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>________________________________
> >>>From: srecko joksimovic <[email protected]>
> >>>To: arun <[email protected]>
> >>>Sent: Thursday, August 29, 2013 2:22 PM
> >>>
> >>>Subject: Re: [R] Add new calculated column to data frame
> >>>
> >>>
> >>>
> >>>Sorry... I should figure it out...
> >>>
> >>>thanks so much!
> >>>Srecko
> >>>
> >>>
> >>>
> >>>On Thu, Aug 29, 2013 at 11:21 AM, arun <[email protected]> wrote:
> >>>
> >>>Hi,
> >>>>The one you showed is:
> >>>>
> >>>>dat1$time_on_task<- c(diff(dat1$time),NA)
> >>>>
> >>>> dat1
> >>>>#  id  event       time time_on_task
> >>>>#1  1    add 1373502892           80
> >>>>
> >>>>#2  2    add 1373502972           23
> >>>>#3  3 delete 1373502995          901
> >>>>#4  4   view 1373503896          100
> >>>>#5  5    add 1373503996           NA
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>________________________________
> >>>>From: srecko joksimovic <[email protected]>
> >>>>
> >>>>To: arun <[email protected]>
> >>>>Cc: R help <[email protected]>
> >>>>Sent: Thursday, August 29, 2013 2:15 PM
> >>>>Subject: Re: [R] Add new calculated column to data frame
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>Thanks Arun,
> >>>>
> >>>>this is great. However, it should be just a little bit different:
> >>>>
> >>>>#  id  event       time time_on_task
> >>>>#1  1    add 1373502892           80
> >>>>#2  2    add 1373502972           23
> >>>>#3  3 delete 1373502995           901
> >>>>#4  4   view 1373503896          100
> >>>>#5  5    add 1373503996          NA
> >>>>
> >>>>
> >>>>When I calculate difference, I need to know how long each activity
> was. It is id2-id1 for the first activity...
> >>>>
> >>>>
> >>>>
> >>>>On Thu, Aug 29, 2013 at 11:03 AM, arun <[email protected]> wrote:
> >>>>
> >>>>
> >>>>>
> >>>>>Hi,
> >>>>>Try:
> >>>>>dat1<- read.table(text="
> >>>>>id    event    time
> >>>>>
> >>>>>1    add      1373502892
> >>>>>2    add      1373502972
> >>>>>3    delete  1373502995
> >>>>>4    view      1373503896
> >>>>>5    add      1373503996
> >>>>>",sep="",header=TRUE,stringsAsFactors=FALSE)
> >>>>> dat1$time_on_task<- c(NA,diff(dat1$time))
> >>>>> dat1
> >>>>>#  id  event       time time_on_task
> >>>>>#1  1    add 1373502892           NA
> >>>>>#2  2    add 1373502972           80
> >>>>>#3  3 delete 1373502995           23
> >>>>>#4  4   view 1373503896          901
> >>>>>#5  5    add 1373503996          100
> >>>>>
> >>>>>#Not sure whether this depends on the values of "event" or not..
> >>>>>A.K.
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>----- Original Message -----
> >>>>>From: srecko joksimovic <[email protected]>
> >>>>>To: R help <[email protected]>
> >>>>>Cc:
> >>>>>Sent: Thursday, August 29, 2013 1:52 PM
> >>>>>Subject: [R] Add new calculated column to data frame
> >>>>>
> >>>>>Hi,
> >>>>>
> >>>>>I have a following data set:
> >>>>>id    event    time (in sec)
> >>>>>1     add      1373502892
> >>>>>2     add      1373502972
> >>>>>3     delete   1373502995
> >>>>>4     view      1373503896
> >>>>>5     add       1373503996
> >>>>>...
> >>>>>
> >>>>>I'd like to add new column "time on task" which is time elapsed
> between two
> >>>>>events (id2 - id1...). What would be the best approach to do that?
> >>>>>
> >>>>>Thanks,
> >>>>>Srecko
> >>>>>
> >>>>>    [[alternative HTML version deleted]]
> >>>>>
> >>>>>______________________________________________
> >>>>>[email protected] 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.
> >>>>>
> >>>>>
> >>>>
> >>>
> >>
> >
>

        [[alternative HTML version deleted]]

______________________________________________
[email protected] 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.

Reply via email to