简体   繁体   中英

Matching and merging headers in R

In R, I want to match and merge two matrices.

For example,

> A
     ID   a  b  c  d  e  f  g
  1  ex   3  8  7  6  9  8  4
  2  am   7  5  3  0  1  8  3
  3  ple  8  5  7  9  2  3  1

> B
    col1
  1  a
  2  c
  3  e
  4  f

Then, I want to match header of matrix A and 1st column of matrix B.

The final result should be a matrix like below.

> C
     ID   a  c  e  f
  1  ex   3  7  9  8
  2  am   7  3  1  8
  3  ple  8  7  2  3

*( My original data has more than 500 columns and more than 20,000 rows.)

Are there any tips for that? Would really appreciate your help.

*In advance, if the matrix B is like below,

> B
     col1 col2 col3 col4
  1   a    c    e    f  

How to make the matrix C in this case?

You want:

A[, c('ID', B[, 1])]

For the second case, you want to use row number 1 of the second matrix, instead of its first column.

A[, c('ID', B[1, ])]

If B is a data.frame instead of a matrix , the syntax changes somewhat — you can use B$col1 instead of B[, 1] , and to select by row, you need to transform the result to a vector, because the result of selecting a row in a data.frame is again a data.frame , ie you need to do unlist(B[1, ]) .

您可以使用一个子集:

cbind(A$ID, A[names(A) %in% B$col1])

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM