- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- MS Excel
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP
- Physics
- Chemistry
- Biology
- Mathematics
- English
- Economics
- Psychology
- Social Studies
- Fashion Studies
- Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
How to combine a data frame and a named vector if name matches with a column in R?
If we have a data frame that contains a character column and a named vector which has the same names as in the character column of the data frame then we can combine this data frame and the vector by using match function be appropriately defining the names and the character column. Check out the below example to understand how it can be done.
Example
Consider the below data frame df1 and the vector v1 −
df1<-data.frame(ID=LETTERS[1:20],x1=rpois(20,2)) df1
Output
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
Example
vector1<-rnorm(20) names(vector1)<-LETTERS[1:20] vector1
Output
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
Matching column ID and vector1 −
Example
df1$vector1<-vector1[match(df1$ID,names(vector1))] df1
Output
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
Example
df2<-data.frame(S.No=letters[1:20],x1=rpois(20,10)) df2
Output
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
Example
vector2<-rnorm(20) names(vector2)<-letters[1:20] vector2
Output
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
Matching column S.No and vector2 −
Example
df2$vector2<-vector2[match(df2$S.No,names(vector2))] df2
Output
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
Advertisements