在 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+ 次檢視

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.