banner



How To Bind Two Matrix In R

  1. Apply rbind to Combine Two Data Frames in R
  2. Utilise the dplyr Package
  3. Combine Big Data Frames in R
Combine Two Data Frames in R

When manipulating data with R lawmaking, we often face the need to combine two data frames into 1. This tutorial will encounter a few methods to efficiently combine 2 data frames in R.

Suppose yous have ii data frames, x and y, with some matching columns. For example:

                                          x                  <-                  data.frame(a=                  c(218,                  415,                  339), b=                  c(25,                  19,                  43), c=                  c(950,                  872,                  645))                                                            y                  <-                  data.frame(a=                  c(309,                  115), c=                  c(799,                  814))                                                    

And you lot need to combine them into one resulting data frame, called z, for instance. Such data frames could exist similar these:

R data frame example

Apply rbind to Combine Two Data Frames in R

The rbind part combines information structures, such as information frames, vectors, or matrices, by rows. Its name stands for row-bind.

When using rbind to combine two information frames, both information frames demand to have the aforementioned columns. Therefore, in the previous example, you need to add the b column to the data frame y. This can be done by executing this command:

Now the y data frame should wait similar this:

R data frame example

Now you can utilize rbind to combine the x and y data frames into the new z data frame by executing this command:

                                          ten                  <-                  information.frame(a=                  c(218,                  415,                  339), b=                  c(25,                  19,                  43), c=                  c(950,                  872,                  645))                                                            y                  <-                  data.frame(a=                  c(309,                  115), c=                  c(799,                  814))                                                                                                                        y$b                  <-                  NA                                                                                                                        z                  <-                  rbind(10, y)                                                    

Output:

                                                            a  b   c                                                                              1                  218                  25                  950                                                                              ii                  415                  xix                  872                                                                              three                  339                  43                  645                                                                              four                  309                  NA                  799                                                                              5                  115                  NA                  814                                                    

Use the dplyr Package

If you don't want to write an extra line of code or add fictitious columns to one of the data frames but to be able to employ rbind, you can install the dplyr package then but use:

It populates the z data frame with the combination of ten and y.

Combine Large Data Frames in R

The previous examples work fine with small data frames with a few rows and 2 or iii columns. But when yous need to merge big information sets with a lot of rows and an arbitrary number of columns, it could be better to write a office that does the task faster, like the following:

                                          quickmerge                  <-                  part(df1, df2) {                                                                              df1.names                  <-                  names(df1)                                                                              df2.names                  <-                  names(df2)                                                                              df2.add                  <-                  setdiff(df1.names, df2.names)                                                                              df1.add                  <-                  setdiff(df2.names, df1.names)                                                                              if(length(df2.add together)                  >                  0) {                                                                              for(i in                  one                  :                  length(df2.add)) {                                                                              df2[df2.add[i]]                  <-                  NA                                                                              }                                                                              }                                                                              if(length(df1.add)                  >                  0) {                                                                              for(i in                  ane                  :                  length(df1.add together)) {                                                                              df1[df1.add[i]]                  <-                  NA                                                                              }                                                                              }                                                                              return(rbind(df1, df2))                                                            }                                                    

This role begins by comparing the column names in the data frames and then adding the necessary columns to make them equal. Finally, it uses the rbind function to combine the rows and return the result. To call the office, you apply:

The complete instance code is as below.

                                          quickmerge                  <-                  function(df1, df2) {                                                                              df1.names                  <-                  names(df1)                                                                              df2.names                  <-                  names(df2)                                                                              df2.add                  <-                  setdiff(df1.names, df2.names)                                                                              df1.add                  <-                  setdiff(df2.names, df1.names)                                                                              if(length(df2.add together)                  >                  0) {                                                                              for(i in                  1                  :                  length(df2.add)) {                                                                              df2[df2.add[i]]                  <-                  NA                                                                              }                                                                              }                                                                              if(length(df1.add)                  >                  0) {                                                                              for(i in                  ane                  :                  length(df1.add)) {                                                                              df1[df1.add[i]]                  <-                  NA                                                                              }                                                                              }                                                                              return(rbind(df1, df2))                                                            }                                                                                                                        x                  <-                  data.frame(a=                  c(218,                  415,                  339), b=                  c(25,                  19,                  43), c=                  c(950,                  872,                  645))                                                            y                  <-                  information.frame(a=                  c(309,                  115), c=                  c(799,                  814))                                                                                                                        z                  <-                  quickmerge(x, y)                                                                                                                                          print(z)                                                    

Output:

                                                            a  b   c                                                            1 218 25 950                                                            two 415 19 872                                                            three 339 43 645                                                            iv 309 NA 799                                                            5 115 NA 814                                                    

Source: https://www.delftstack.com/howto/r/combine-two-dataframes-in-r/

0 Response to "How To Bind Two Matrix In R"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel