Dear R users,


I have a data where I desire to subset according to certain conditions.
However, the script is very messy as there are about 30 distinct conditions.
(i.e. same script but with different conditions)

I would like to make a user defined function so that I can input the desired
conditions and just get the results accordingly.

Below is an arbitrary data set & sample statements with its outputs in
accordance with specified conditions:


x <- data.frame(ID=rep(letters[1:5],2), A1=rep(10:14,2), A2=rep(2:6,2),
A3=c(101:105,95:99), A4=3*ceil(rt(10,2)))

x1 <- subset(x, ID == "a" & A1 <= 10 & A2 > 1 & A3 > 100)  #condition 1
x2 <- subset(x, ID == "a" & A1 >= 10 & A2 > 1 & A3 < 100)  #condition 2
x3 <- subset(x, ID == "a" & A1 >= 10 & A2 > 1)                   #condition
3

> x
   ID A1 A2  A3  A4
1   a 10  2 101 -60
2   b 11  3 102   0
3   c 12  4 103   3
4   d 13  5 104   0
5   e 14  6 105   3
6   a 10  2  95   3
7   b 11  3  96   3
8   c 12  4  97   9
9   d 13  5  98   0
10  e 14  6  99   3
> x1
  ID A1 A2  A3  A4
1  a 10  2 101 -60
> x2
  ID A1 A2 A3 A4
6  a 10  2 95  3

> x3
  ID A1 A2  A3  A4
1  a 10  2 101 -60
6  a 10  2  95   3
>


I would like to make a user defined function so that I don't have to repeat
the identical statements with difference being just the conditions.

For example,

ret <- function(cond)  {
    condition <- ifelse(cond==1, ID == "a" & A1 <= 10 & A2 > 1 & A3 > 100,
ifelse(cond==2, ID == "a" & A1 >= 10 & A2 > 1 & A3 < 100, ID == "a" & A1 >=
10 & A2 > 1))
    x <- subset(x, condition)
    }

then revoke via,

ret(1) or ret(2) etc..



Greatly appreciate for enlightening me solving this problem.





Steven

	[[alternative HTML version deleted]]


