如果名称与R中的列匹配,如何组合数据框和命名向量?

如果我们有一个数据帧,其中包含一个字符列和一个命名向量,其名称与数据帧的字符列中的名称相同,则可以通过使用match函数适当定义名称和字符列。请查看以下示例,了解如何完成此操作。

示例

考虑下面的数据帧df1和向量v1-

df1<-data.frame(ID=LETTERS[1:20],x1=rpois(20,2))
df1
输出结果
  ID  x1
1  A  0
2  B  3
3  C  2
4  D  0
5  E  0
6  F  1
7  G  3
8  H  3
9  I  2
10 J  5
11 K  2
12 L  2
13 M  0
14 N  2
15 O  3
16 P  1
17 Q  1
18 R  3
19 S  2
20 T  2

示例

vector1<-rnorm(20)
names(vector1)<-LETTERS[1:20]
vector1
输出结果
       A          B           C           D            E         F
-1.65864624 -0.72535815 -0.03602353 -0.20926615 -1.09707354 -1.09361827
      G         H          I           J           K           L
0.24223290 1.50364961 2.29867732 -0.35459921 -1.78608099 -0.72382906
      M         N           O          P           Q          R
0.12124456 0.76206838 -0.43075989 2.25536662 1.59808504 -0.57818726
        S         T
-0.40555227 0.66445552

匹配列ID和vector1-

示例

df1$vector1<-vector1[match(df1$ID,names(vector1))]
df1
输出结果
    ID  x1  vector1
1   A  0   -1.65864624
2   B  3   -0.72535815
3   C  2   -0.03602353
4   D  0   -0.20926615
5   E  0   -1.09707354
6   F  1   -1.09361827
7   G  3    0.24223290
8   H  3    1.50364961
9   I  2    2.29867732
10  J  5   -0.35459921
11  K  2   -1.78608099
12  L  2   -0.72382906
13  M  0    0.12124456
14  N  2    0.76206838
15  O  3   -0.43075989
16  P  1    2.25536662
17  Q  1    1.59808504
18  R  3   -0.57818726
19  S  2   -0.40555227
20  T  2    0.66445552

示例

df2<-data.frame(S.No=letters[1:20],x1=rpois(20,10))
df2
输出结果
 S.No x1
1  a   9
2  b   8
3  c   9
4  d   6
5  e  13
6  f   3
7  g  13
8  h   9
9  i   9
10 j   6
11 k  12
12 l   6
13 m   7
14 n  11
15 o   6
16 p  21
17 q   9
18 r  13
19 s   7
20 t   8

示例

vector2<-rnorm(20)
names(vector2)<-letters[1:20]
vector2
输出结果
     a             b            c             d          e           f
-1.547152763 -1.111071378 -1.358744699 -0.462245640 0.167145269 -0.635510940
     g             h            i            j           k           l
0.020973365 0.258797947 0.381109857 -0.001844913 0.198083754 -0.057121043
     m             n            o            p           q           r
-0.319798254 -1.597529879 -0.403896403 0.577767115 -1.237463132 -0.734332249
    s             t
-0.252412566 0.957530025

匹配列S.No和向量2-

示例

df2$vector2<-vector2[match(df2$S.No,names(vector2))]
df2
输出结果
   S.No x1  vector2
1  a    9  -1.547152763
2  b    8  -1.111071378
3  c    9  -1.358744699
4  d    6  -0.462245640
5  e   13   0.167145269
6  f    3  -0.635510940
7  g   13   0.020973365
8  h    9   0.258797947
9  i    9   0.381109857
10 j    6  -0.001844913
11 k   12   0.198083754
12 l    6  -0.057121043
13 m    7  -0.319798254
14 n   11  -1.597529879
15 o    6  -0.403896403
16 p   21   0.577767115
17 q    9  -1.237463132
18 r   13  -0.734332249
19 s    7  -0.252412566
20 t    8   0.957530025