在 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
广告