How to apply multiple AND conditions to a data frame in R?


To apply multiple conditions to a data frame, we can use double and sign that is &&. For example, if we have a data frame called df that contains three columns say x, y, z and we want to add a value to all columns if first element in z equals to 5 then it can be done by using the command −

if(df$x && df$y && df$y == 5){
   df$x = df$x+10
   df$y = df$y+10
   df$z = df$z+10
}

Example1

Consider the below data frame −

 Live Demo

x1<-rpois(20,1)
x2<-rpois(20,5)
x3<-rpois(20,5)
df1<-data.frame(x1,x2,x3)
df1

Output

   x1  x2  x3
1  1   4   5
2  0   6   2
3  0   3   6
4  0   3   8
5  0   11  10
6  1   5   3
7  2   9   8
8  0   6   10
9  0   5   6
10 3   2   7
11 2   6   5
12 1   6   7
13 1   8   5
14 1   3   6
15 1   3   4
16 6   4   7
17 1   2   3
18 2   4   5
19 4   5   5
20 0   4   4

Adding 10 to each column of df1 if first element in column 3 is equal to 5 −

if(df1$x1 && df1$x2 && df1$x3 == 5){
   + df1$x1=df1$x1+10
   + df1$x2=df1$x2+10
   + df1$x3=df1$x3+10
   + }
df1


   x1  x2  x3
1  11  14  15
2  10  16  12
3  10  13  16
4  10  13  18
5  10  21  20
6  11  15  13
7  12  19  18
8  10  16  20
9  10  15  16
10 13  12  17
11 12  16  15
12 11  16  17
13 11  18  15
14 11  13  16
15 11  13  14
16 16  14  17
17 11  12  13
18 12  14  15
19 14  15  15
20 10  14  14

Example2

 Live Demo

y1<-rnorm(20)
y2<-rnorm(20)
df2<-data.frame(y1,y2)
df2

Output

         y1          y2
1  -0.60985060  -1.45276610
2   0.80395413   2.06049252
3  -0.12743614  -1.03176509
4   0.05681372   1.56884539
5  -1.05750863   0.23016019
6  -0.23227935  -0.60140044
7   0.85412909  -0.85129323
8  -1.10052209   0.52922611
9  -0.97370660   1.08355421
10 -0.29749358  -0.04810183
11  1.50965424   0.29086647
12  0.11498843  -1.42433231
13  1.95463083  -0.94930405
14 -0.12241118   0.68882049
15  2.11266281  -0.70163806
16 -2.79657925  -1.17756299
17 -0.39618443  -1.60277178
18 -2.38109125   0.25505674
19 -0.84519632   0.39521130
20  0.46643806   0.04849672
if(df2$y1 && df2$y2 == 2){
 + df2$y1=df2$y1+10
 + df2$y2=df2$y2+10
 + }
df2
      y1           y2
1  -0.60985060  -1.45276610
2   0.80395413   2.06049252
3  -0.12743614  -1.03176509
4   0.05681372   1.56884539
5  -1.05750863   0.23016019
6  -0.23227935  -0.60140044
7   0.85412909  -0.85129323
8  -1.10052209   0.52922611
9  -0.97370660   1.08355421
10 -0.29749358  -0.04810183
11  1.50965424   0.29086647
12  0.11498843  -1.42433231
13  1.95463083  -0.94930405
14 -0.12241118   0.68882049
15  2.11266281  -0.70163806
16 -2.79657925  -1.17756299
17 -0.39618443  -1.60277178
18 -2.38109125   0.25505674
19 -0.84519632   0.39521130
20  0.46643806   0.04849672

Updated on: 06-Mar-2021

245 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements