Extract a data frame column values as a vector by matching a vector in R.


To extract a data frame column values as a vector by matching a vector in R, we can use subsetting with %in% operator.

For Example, if we have a data frame called df having a column say C and a vector V and we want to extract values in C if they match with V then we can use the command given below −

df[df$C %in% V,"C"]

Example 1

Following snippet creates a sample data frame and vector −

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

The following dataframe is created

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

To extract values in x3 column that matches with values in V1 on the above created data frame, add the following code to the above snippet −

x1<-rpois(20,5)
x2<-rpois(20,2)
x3<-rpois(20,1)
df1<-data.frame(x1,x2,x3)
df1[df1$x3 %in% V1,"x3"]
V1<-c(0,1)

Output

If you execute all the above given snippets as a single program, it generates the following Output −

[1] 1 1 1 0 0 1 0 1 1 1 0

Example 2

Following snippet creates a sample data frame and vector −

y1<-sample(1:100,20)
y2<-sample(1:100,20)
df2<-data.frame(y1,y2)
df2

The following dataframe is created

  y1  y2
 1  3 93
 2 37 64
 3 73 84
 4 43 46
 5 51 91
 6 99  7
 7 38 71
 8 78 82
 9 93 73
10 20  8
11 63 58
12  1 50
13 60 40
14 46 33
15 58 97
16 41  3
17 44 77
18 68 51
19 42 75
20 94 11

To extract values in y2 column that matches with values in V2 on the above created data frame, add the following code to the above snippet −

y1<-sample(1:100,20)
y2<-sample(1:100,20)
df2<-data.frame(y1,y2)
df2[df2$y2 %in% V2,"y2"]
V2<-c(5,10,15,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95)

Output

If you execute all the above given snippets as a single program, it generates the following Output −

[1] 50 40 75

Example 3

Following snippet creates a sample data frame and vector −

z1<-round(rnorm(20),0)
z2<-round(rnorm(20),0)
z3<-round(rnorm(20),0)
df3<-data.frame(z1,z2,z3)
df3

The following dataframe is created

  z1  z2 z3
 1 -1  0  0
 2  0 -2  0
 3  0  0  1
 4  0 -1 -1
 5  0  0  1
 6 -1 -1  0
 7  1 -1  0
 8  0  0 -1
 9  0 -1 -2
10  0  1  2
11  1  0  0
12  0  0  1
13 -1  0 -1
14 -1 -1  0
15 -3  0  0
16 -1  0  1
17  0  0  1
18 -1  1 -1
19  0  0  0
20 -1  1 -2

To extract values in z1 column that matches with values in V3 on the above created data frame, add the following code to the above snippet −

z1<-round(rnorm(20),0)
z2<-round(rnorm(20),0)
z3<-round(rnorm(20),0)
df3<-data.frame(z1,z2,z3)
df3[df3$z1 %in% V3,"z1"]
V3<-c(0,1)

Output

If you execute all the above given snippets as a single program, it generates the following Output −

[1] 0 0 0 0 1 0 0 0 1 0 0 0

Updated on: 08-Nov-2021

1K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements