[R] who can give me some hint?

Gabor Grothendieck ggrothendieck at gmail.com
Thu Mar 12 13:03:11 CET 2009


I assume the problem is to only keep those rows whose
Rep value is not equal to the Rep value in the prior row.
In that case just compare c("", Rep[-nr]) to Rep and
use the resulting vector, ix, to select out rows.
Rep <- as.character(act_2$Rep) could
be simplified to Rep <- act_2$Rep if Rep
is already known to be "character".


Lines <- "Date    Dtime Hour Min Second               Rep
51 2006-02-22 14:52:18   14  52     18  useractivity_act
52 2006-02-22 14:52:18   14  52     18                 4
55 2006-02-22 14:52:49   14  52     49                 4
57 2006-02-22 14:52:51   14  52     51                 4
58 2006-02-22 14:52:52   14  52     52                 3
60 2006-02-22 14:54:42   14  54     42 useractivity_idle"

act_2 <- read.table(textConnection(Lines), header = TRUE, as.is = TRUE)

nr <- nrow(act_2)
Rep <- as.character(act_2$Rep)
ix <- Rep != c("", Rep[-nr])
act_2[ix]

On Thu, Mar 12, 2009 at 6:25 AM, Tammy Ma <metal_licaling at live.com> wrote:
>
>
>
>  Hi All,
>
>
>> act_2
>         Date    Dtime Hour Min Second               Rep
> 51 2006-02-22 14:52:18   14  52     18  useractivity_act
> 52 2006-02-22 14:52:18   14  52     18                 4
> 55 2006-02-22 14:52:49   14  52     49                 4
> 57 2006-02-22 14:52:51   14  52     51                 4
> 58 2006-02-22 14:52:52   14  52     52                 3
> 60 2006-02-22 14:54:42   14  54     42 useractivity_idle
>
> I want to change act_2 to
>         Date    Dtime Hour Min Second               Rep
>
> 51 2006-02-22 14:52:18   14  52     18  useractivity_act
>
> 52 2006-02-22 14:52:18   14  52     18                 4
> 58 2006-02-22 14:52:52   14  52     52                 3
> 60 2006-02-22 14:54:42   14  54     42 useractivity_idle
>
> in other word, I want to keep 1st if there are many repeated value, I made the program as:
>
>
> rm_r<-function(act_2){
>  dm<-dim(act_2)[1]-1
>  for(i in 2:dm){
>
>  if(act_2$Rep[i+1]==act_2$Rep[i]){
>   act_2<-act_2[-(i+1),]
>   }else{
>   act_2<-act_2
>   }
>  }
> return(act_2)
> }
>
> when it moved one row on 1st loop, i should still start 2 but it become 3 at 2nd loop, if I add i<-i-1, then i go to 1
> seems not reasonbale. How should I modify it`?
>
> Tammy
> _________________________________________________________________
> Drag n’ drop—Get easy photo sharing with Windows Live™ Photos.
>
> http://www.microsoft.com/windows/windowslive/products/photos.aspx
>        [[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.
>
>




More information about the R-help mailing list