在 R 中通过匹配向量提取数据框列值作为向量。


为了在 R 中通过匹配向量提取数据框列值作为向量,我们可以使用带有 %in% 运算符的子集。

例如,如果我们有一个名为 df 的数据框,它有一个名为 C 的列和一个向量 V,并且我们希望在 C 中提取与 V 匹配的值,那么我们可以使用以下命令:

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

示例 1

以下代码片段创建了一个示例数据框和向量:

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

创建了以下数据框

  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

为了在上面创建的数据框中提取与 V1 中的值匹配的 x3 列中的值,请将以下代码添加到上述代码片段中:

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)

输出

如果您将所有上述代码片段作为单个程序执行,它将生成以下输出:

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

示例 2

以下代码片段创建了一个示例数据框和向量:

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

创建了以下数据框

  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

为了在上面创建的数据框中提取与 V2 中的值匹配的 y2 列中的值,请将以下代码添加到上述代码片段中:

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)

输出

如果您将所有上述代码片段作为单个程序执行,它将生成以下输出:

[1] 50 40 75

示例 3

以下代码片段创建了一个示例数据框和向量:

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

创建了以下数据框

  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

为了在上面创建的数据框中提取与 V3 中的值匹配的 z1 列中的值,请将以下代码添加到上述代码片段中:

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)

输出

如果您将所有上述代码片段作为单个程序执行,它将生成以下输出:

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

更新于: 2021年11月8日

1K+ 次查看

启动您的 职业生涯

通过完成课程获得认证

开始
广告