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

r programmingserver side programmingprogramming更新于 2024/11/7 0:47:00

要通过匹配 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

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

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

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

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

相关文章