如何在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和向量1:
示例
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
广告