[R] Filtering based on the occurrence

Giorgio Garziano giorgio.garziano at ericsson.com
Wed Mar 30 10:33:25 CEST 2016


# your code
Subject<- c("2", "2", "2", "3", "3", "3", "4", "4", "5", "5", "5", "5")
dates <- seq(as.Date('2011-01-01'),as.Date('2011-01-12'), by = 1)
deps <- c("A", "B", "C", "C", "D", "A", "F", "G", "A", "F", "A", "D")
df <- data.frame(Subject, dates, deps)
df
final<-c("2 2011-01-02    B","2 2011-01-03    C","3 2011-01-05    D","3 2011-01-06    A",
         "4 2011-01-07    F","4 2011-01-08    G","5 2011-01-10    F","5 2011-01-11    A",
         "5 2011-01-12    D")

# here below my code
dep.list <- c("B", "D", "F")
sel.row = NULL
for (dep in dep.list) {
  f <- which(df$deps == dep)
  sel.row <- c(sel.row, c(f, f+1))
}
sel.row[sel.row > nrow(df)] <- NA
sel.row <- na.omit(sel.row)
df.sel <- df[sel.row,]
df.sel.ord <- df.sel[order(df.sel$dates),]

# showing and comparing with final
> df.sel.ord
   Subject      dates deps
2        2 2011-01-02    B
3        2 2011-01-03    C
5        3 2011-01-05    D
6        3 2011-01-06    A
7        4 2011-01-07    F
8        4 2011-01-08    G
10       5 2011-01-10    F
11       5 2011-01-11    A
12       5 2011-01-12    D

> data.frame(final)
              final
1 2 2011-01-02    B
2 2 2011-01-03    C
3 3 2011-01-05    D
4 3 2011-01-06    A
5 4 2011-01-07    F
6 4 2011-01-08    G
7 5 2011-01-10    F
8 5 2011-01-11    A
9 5 2011-01-12    D

--

Best

GG


	[[alternative HTML version deleted]]



More information about the R-help mailing list